-
Notifications
You must be signed in to change notification settings - Fork 0
/
search-pro.worker.js
2 lines (2 loc) · 183 KB
/
search-pro.worker.js
1
2
const V=Object.entries,et=Object.fromEntries,st="ENTRIES",L="KEYS",T="VALUES",_="";class D{set;_type;_path;constructor(t,s){const n=t._tree,o=Array.from(n.keys());this.set=t,this._type=s,this._path=o.length>0?[{node:n,keys:o}]:[]}next(){const t=this.dive();return this.backtrack(),t}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:t,keys:s}=E(this._path);if(E(s)===_)return{done:!1,value:this.result()};const n=t.get(E(s));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const t=E(this._path).keys;t.pop(),!(t.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:t})=>E(t)).filter(t=>t!==_).join("")}value(){return E(this._path).node.get(_)}result(){switch(this._type){case T:return this.value();case L:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const E=e=>e[e.length-1],nt=(e,t,s)=>{const n=new Map;if(t===void 0)return n;const o=t.length+1,u=o+s,i=new Uint8Array(u*o).fill(s+1);for(let r=0;r<o;++r)i[r]=r;for(let r=1;r<u;++r)i[r*o]=r;return R(e,t,s,n,i,1,o,""),n},R=(e,t,s,n,o,u,i,r)=>{const d=u*i;t:for(const c of e.keys())if(c===_){const a=o[d-1];a<=s&&n.set(r,[e.get(c),a])}else{let a=u;for(let h=0;h<c.length;++h,++a){const g=c[h],m=i*a,p=m-i;let l=o[m];const f=Math.max(0,a-s-1),y=Math.min(i-1,a+s);for(let F=f;F<y;++F){const v=g!==t[F],z=o[p+F]+ +v,A=o[p+F+1]+1,w=o[m+F]+1,j=o[m+F+1]=Math.min(z,A,w);j<l&&(l=j)}if(l>s)continue t}R(e.get(c),t,s,n,o,a,i,r+c)}};class C{_tree;_prefix;_size=void 0;constructor(t=new Map,s=""){this._tree=t,this._prefix=s}atPrefix(t){if(!t.startsWith(this._prefix))throw new Error("Mismatched prefix");const[s,n]=x(this._tree,t.slice(this._prefix.length));if(s===void 0){const[o,u]=O(n);for(const i of o.keys())if(i!==_&&i.startsWith(u)){const r=new Map;return r.set(i.slice(u.length),o.get(i)),new C(r,t)}}return new C(s,t)}clear(){this._size=void 0,this._tree.clear()}delete(t){return this._size=void 0,ot(this._tree,t)}entries(){return new D(this,st)}forEach(t){for(const[s,n]of this)t(s,n,this)}fuzzyGet(t,s){return nt(this._tree,t,s)}get(t){const s=k(this._tree,t);return s!==void 0?s.get(_):void 0}has(t){const s=k(this._tree,t);return s!==void 0&&s.has(_)}keys(){return new D(this,L)}set(t,s){if(typeof t!="string")throw new Error("key must be a string");return this._size=void 0,I(this._tree,t).set(_,s),this}get size(){if(this._size)return this._size;this._size=0;const t=this.entries();for(;!t.next().done;)this._size+=1;return this._size}update(t,s){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;const n=I(this._tree,t);return n.set(_,s(n.get(_))),this}fetch(t,s){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;const n=I(this._tree,t);let o=n.get(_);return o===void 0&&n.set(_,o=s()),o}values(){return new D(this,T)}[Symbol.iterator](){return this.entries()}static from(t){const s=new C;for(const[n,o]of t)s.set(n,o);return s}static fromObject(t){return C.from(Object.entries(t))}}const x=(e,t,s=[])=>{if(t.length===0||e==null)return[e,s];for(const n of e.keys())if(n!==_&&t.startsWith(n))return s.push([e,n]),x(e.get(n),t.slice(n.length),s);return s.push([e,t]),x(void 0,"",s)},k=(e,t)=>{if(t.length===0||e==null)return e;for(const s of e.keys())if(s!==_&&t.startsWith(s))return k(e.get(s),t.slice(s.length))},I=(e,t)=>{const s=t.length;t:for(let n=0;e&&n<s;){for(const u of e.keys())if(u!==_&&t[n]===u[0]){const i=Math.min(s-n,u.length);let r=1;for(;r<i&&t[n+r]===u[r];)++r;const d=e.get(u);if(r===u.length)e=d;else{const c=new Map;c.set(u.slice(r),d),e.set(t.slice(n,n+r),c),e.delete(u),e=c}n+=r;continue t}const o=new Map;return e.set(t.slice(n),o),o}return e},ot=(e,t)=>{const[s,n]=x(e,t);if(s!==void 0){if(s.delete(_),s.size===0)W(n);else if(s.size===1){const[o,u]=s.entries().next().value;q(n,o,u)}}},W=e=>{if(e.length===0)return;const[t,s]=O(e);if(t.delete(s),t.size===0)W(e.slice(0,-1));else if(t.size===1){const[n,o]=t.entries().next().value;n!==_&&q(e.slice(0,-1),n,o)}},q=(e,t,s)=>{if(e.length===0)return;const[n,o]=O(e);n.set(o+t,s),n.delete(o)},O=e=>e[e.length-1],ut=(e,t)=>{const s=e._idToShortId.get(t);if(s!=null)return e._storedFields.get(s)},it=/[\n\r -#%-*,-/:;?@[-\]_{}\u00A0\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u1680\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2000-\u200A\u2010-\u2029\u202F-\u2043\u2045-\u2051\u2053-\u205F\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u3000-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]+/u,M="or",$="and",rt="and_not",ct=(e,t)=>{e.includes(t)||e.push(t)},N=(e,t)=>{for(const s of t)e.includes(s)||e.push(s)},P=({score:e},{score:t})=>t-e,lt=()=>new Map,b=e=>{const t=new Map;for(const s of Object.keys(e))t.set(parseInt(s,10),e[s]);return t},G=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0,ht={[M]:(e,t)=>{for(const s of t.keys()){const n=e.get(s);if(n==null)e.set(s,t.get(s));else{const{score:o,terms:u,match:i}=t.get(s);n.score=n.score+o,n.match=Object.assign(n.match,i),N(n.terms,u)}}return e},[$]:(e,t)=>{const s=new Map;for(const n of t.keys()){const o=e.get(n);if(o==null)continue;const{score:u,terms:i,match:r}=t.get(n);N(o.terms,i),s.set(n,{score:o.score+u,terms:o.terms,match:Object.assign(o.match,r)})}return s},[rt]:(e,t)=>{for(const s of t.keys())e.delete(s);return e}},dt=(e,t,s,n,o,u)=>{const{k:i,b:r,d}=u;return Math.log(1+(s-t+.5)/(t+.5))*(d+e*(i+1)/(e+i*(1-r+r*n/o)))},at=e=>(t,s,n)=>{const o=typeof e.fuzzy=="function"?e.fuzzy(t,s,n):e.fuzzy||!1,u=typeof e.prefix=="function"?e.prefix(t,s,n):e.prefix===!0;return{term:t,fuzzy:o,prefix:u}},H=(e,t,s,n)=>{for(const o of Object.keys(e._fieldIds))if(e._fieldIds[o]===s){e._options.logger("warn",`SlimSearch: document with ID ${e._documentIds.get(t)} has changed before removal: term "${n}" was not present in field "${o}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}},ft=(e,t,s,n)=>{if(!e._index.has(n)){H(e,s,t,n);return}const o=e._index.fetch(n,lt),u=o.get(t);u==null||u.get(s)==null?H(e,s,t,n):u.get(s)<=1?u.size<=1?o.delete(t):u.delete(s):u.set(s,u.get(s)-1),e._index.get(n).size===0&&e._index.delete(n)},gt={k:1.2,b:.7,d:.5},mt={idField:"id",extractField:(e,t)=>e[t],tokenize:e=>e.split(it),processTerm:e=>e.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(e,t)=>{typeof console?.[e]=="function"&&console[e](t)},autoVacuum:!0},J={combineWith:M,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:gt},pt={combineWith:$,prefix:(e,t,s)=>t===s.length-1},Ft={batchSize:1e3,batchWait:10},U={minDirtFactor:.1,minDirtCount:20},_t={...Ft,...U},K=Symbol("*"),yt=(e,t)=>{const s=new Map,n={...e._options.searchOptions,...t};for(const[o,u]of e._documentIds){const i=n.boostDocument?n.boostDocument(u,"",e._storedFields.get(o)):1;s.set(o,{score:i,terms:[],match:{}})}return s},X=(e,t=M)=>{if(e.length===0)return new Map;const s=t.toLowerCase(),n=ht[s];if(!n)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(n)||new Map},S=(e,t,s,n,o,u,i,r,d=new Map)=>{if(o==null)return d;for(const c of Object.keys(u)){const a=u[c],h=e._fieldIds[c],g=o.get(h);if(g==null)continue;let m=g.size;const p=e._avgFieldLength[h];for(const l of g.keys()){if(!e._documentIds.has(l)){ft(e,h,l,s),m-=1;continue}const f=i?i(e._documentIds.get(l),s,e._storedFields.get(l)):1;if(!f)continue;const y=g.get(l),F=e._fieldLength.get(l)[h],v=dt(y,m,e._documentCount,F,p,r),z=n*a*f*v,A=d.get(l);if(A){A.score+=z,ct(A.terms,t);const w=G(A.match,s);w?w.push(c):A.match[s]=[c]}else d.set(l,{score:z,terms:[t],match:{[s]:[c]}})}}return d},At=(e,t,s)=>{const n={...e._options.searchOptions,...s},o=(n.fields||e._options.fields).reduce((l,f)=>({...l,[f]:G(n.boost,f)||1}),{}),{boostDocument:u,weights:i,maxFuzzy:r,bm25:d}=n,{fuzzy:c,prefix:a}={...J.weights,...i},h=e._index.get(t.term),g=S(e,t.term,t.term,1,h,o,u,d);let m,p;if(t.prefix&&(m=e._index.atPrefix(t.term)),t.fuzzy){const l=t.fuzzy===!0?.2:t.fuzzy,f=l<1?Math.min(r,Math.round(t.term.length*l)):l;f&&(p=e._index.fuzzyGet(t.term,f))}if(m)for(const[l,f]of m){const y=l.length-t.term.length;if(!y)continue;p?.delete(l);const F=a*l.length/(l.length+.3*y);S(e,t.term,l,F,f,o,u,d,g)}if(p)for(const l of p.keys()){const[f,y]=p.get(l);if(!y)continue;const F=c*l.length/(l.length+y);S(e,t.term,l,F,f,o,u,d,g)}return g},Y=(e,t,s={})=>{if(t===K)return yt(e,s);if(typeof t!="string"){const a={...s,...t,queries:void 0},h=t.queries.map(g=>Y(e,g,a));return X(h,a.combineWith)}const{tokenize:n,processTerm:o,searchOptions:u}=e._options,i={tokenize:n,processTerm:o,...u,...s},{tokenize:r,processTerm:d}=i,c=r(t).flatMap(a=>d(a)).filter(a=>!!a).map(at(i)).map(a=>At(e,a,i));return X(c,i.combineWith)},Q=(e,t,s={})=>{const n=Y(e,t,s),o=[];for(const[u,{score:i,terms:r,match:d}]of n){const c=r.length||1,a={id:e._documentIds.get(u),score:i*c,terms:Object.keys(d),queryTerms:r,match:d};Object.assign(a,e._storedFields.get(u)),(s.filter==null||s.filter(a))&&o.push(a)}return t===K&&s.boostDocument==null&&e._options.searchOptions.boostDocument==null||o.sort(P),o},Ct=(e,t,s={})=>{s={...e._options.autoSuggestOptions,...s};const n=new Map;for(const{score:u,terms:i}of Q(e,t,s)){const r=i.join(" "),d=n.get(r);d!=null?(d.score+=u,d.count+=1):n.set(r,{score:u,terms:i,count:1})}const o=[];for(const[u,{score:i,terms:r,count:d}]of n)o.push({suggestion:u,terms:r,score:i/d});return o.sort(P),o};class Et{_options;_index;_documentCount;_documentIds;_idToShortId;_fieldIds;_fieldLength;_avgFieldLength;_nextId;_storedFields;_dirtCount;_currentVacuum;_enqueuedVacuum;_enqueuedVacuumConditions;constructor(t){if(t?.fields==null)throw new Error('SlimSearch: option "fields" must be provided');const s=t.autoVacuum==null||t.autoVacuum===!0?_t:t.autoVacuum;this._options={...mt,...t,autoVacuum:s,searchOptions:{...J,...t.searchOptions||{}},autoSuggestOptions:{...pt,...t.autoSuggestOptions||{}}},this._index=new C,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=U,this.addFields(this._options.fields)}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}get documentCount(){return this._documentCount}get termCount(){return this._index.size}toJSON(){const t=[];for(const[s,n]of this._index){const o={};for(const[u,i]of n)o[u]=Object.fromEntries(i);t.push([s,o])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:t,serializationVersion:2}}addFields(t){for(let s=0;s<t.length;s++)this._fieldIds[t[s]]=s}}const zt=({index:e,documentCount:t,nextId:s,documentIds:n,fieldIds:o,fieldLength:u,averageFieldLength:i,storedFields:r,dirtCount:d,serializationVersion:c},a)=>{if(c!==1&&c!==2)throw new Error("SlimSearch: cannot deserialize an index created with an incompatible version");const h=new Et(a);h._documentCount=t,h._nextId=s,h._documentIds=b(n),h._idToShortId=new Map,h._fieldIds=o,h._fieldLength=b(u),h._avgFieldLength=i,h._storedFields=b(r),h._dirtCount=d||0,h._index=new C;for(const[g,m]of h._documentIds)h._idToShortId.set(m,g);for(const[g,m]of e){const p=new Map;for(const l of Object.keys(m)){let f=m[l];c===1&&(f=f.ds),p.set(parseInt(l,10),b(f))}h._index.set(g,p)}return h},B=(e,t)=>{const s=e.toLowerCase(),n=t.toLowerCase(),o=[];let u=0,i=0;const r=(c,a=!1)=>{let h="";i===0?h=c.length>20?`… ${c.slice(-20)}`:c:a?h=c.length+i>100?`${c.slice(0,100-i)}… `:c:h=c.length>20?`${c.slice(0,20)} … ${c.slice(-20)}`:c,h&&o.push(h),i+=h.length,a||(o.push(["mark",t]),i+=t.length,i>=100&&o.push(" …"))};let d=s.indexOf(n,u);if(d===-1)return null;for(;d>=0;){const c=d+n.length;if(r(e.slice(u,d)),u=c,i>100)break;d=s.indexOf(n,u)}return i<100&&r(e.slice(u),!0),o},wt=(e,t)=>t.contents.reduce((s,[,n])=>s+n,0)-e.contents.reduce((s,[,n])=>s+n,0),xt=(e,t)=>Math.max(...t.contents.map(([,s])=>s))-Math.max(...e.contents.map(([,s])=>s)),Z=(e,t,s={})=>{const n={};return Q(t,e,{boost:{h:2,t:1,c:4},prefix:!0,...s}).forEach(o=>{const{id:u,terms:i,score:r}=o,d=u.includes("@"),c=u.includes("#"),[a,h]=u.split(/[#@]/),g=Number(a),m=i.sort((l,f)=>l.length-f.length).filter((l,f)=>i.slice(f+1).every(y=>!y.includes(l))),{contents:p}=n[g]??={title:"",contents:[]};if(d)p.push([{type:"customField",id:g,index:h,display:m.map(l=>o.c.map(f=>B(f,l))).flat().filter(l=>l!==null)},r]);else{const l=m.map(f=>B(o.h,f)).filter(f=>f!==null);if(l.length&&p.push([{type:c?"heading":"title",id:g,...c&&{anchor:h},display:l},r]),"t"in o)for(const f of o.t){const y=m.map(F=>B(f,F)).filter(F=>F!==null);y.length&&p.push([{type:"text",id:g,...c&&{anchor:h},display:y},r])}}}),V(n).sort(([,o],[,u])=>"max"==="total"?wt(o,u):xt(o,u)).map(([o,{title:u,contents:i}])=>{if(!u){const r=ut(t,o);r&&(u=r.h)}return{title:u,contents:i.map(([r])=>r)}})},tt=(e,t,s={})=>{const n=Ct(t,e,{fuzzy:.2,maxFuzzy:3,...s}).map(({suggestion:o})=>o);return e.includes(" ")?n:n.filter(o=>!o.includes(" "))},bt=et(V(JSON.parse("{\"/\":{\"documentCount\":221,\"nextId\":221,\"documentIds\":{\"0\":\"0\",\"1\":\"0#what-is-psqlpy\",\"2\":\"0#how-to-install\",\"3\":\"0#join-community\",\"4\":\"1\",\"5\":\"1#key-findings\",\"6\":\"1#local-database\",\"7\":\"1#external-database\",\"8\":\"2\",\"9\":\"2#setting-up-environment\",\"10\":\"2#linting-and-type-checking\",\"11\":\"2#testing\",\"12\":\"3\",\"13\":\"3#limit-of-offset-isn-t-working\",\"14\":\"3#problem-and-solution\",\"15\":\"3#where-in-clause-isn-t-working\",\"16\":\"3#problem-and-solution-1\",\"17\":\"3#wrong-binary-data\",\"18\":\"3#problem-and-solution-2\",\"19\":\"3#cannot-insert-empty-array\",\"20\":\"3#problem-and-solution-3\",\"21\":\"4\",\"22\":\"4#components\",\"23\":\"5\",\"24\":\"5#usage\",\"25\":\"5#connection-methods\",\"26\":\"5#execute\",\"27\":\"5#parameters\",\"28\":\"5#execute-batch\",\"29\":\"5#parameters-1\",\"30\":\"5#fetch\",\"31\":\"5#parameters-2\",\"32\":\"5#execute-many\",\"33\":\"5#parameters-3\",\"34\":\"5#fetch-row\",\"35\":\"5#parameters-4\",\"36\":\"5#fetch-val\",\"37\":\"5#parameters-5\",\"38\":\"5#transaction\",\"39\":\"5#parameters-6\",\"40\":\"5#back-to-pool\",\"41\":\"6\",\"42\":\"6#all-available-connectionpool-parameters\",\"43\":\"6#initialize-connection-pool-with-separate-parameters\",\"44\":\"6#initialize-connection-pool-with-dsn\",\"45\":\"6#create-connection-pool-with-one-function\",\"46\":\"6#use-connection-pool-as-context-manager\",\"47\":\"6#connection-pool-methods\",\"48\":\"6#resize\",\"49\":\"6#parameters\",\"50\":\"6#status\",\"51\":\"6#execute\",\"52\":\"6#parameters-1\",\"53\":\"6#fetch\",\"54\":\"6#parameters-2\",\"55\":\"6#acquire\",\"56\":\"6#connection\",\"57\":\"6#close\",\"58\":\"7\",\"59\":\"7#connectionpoolbuilder-methods\",\"60\":\"7#build\",\"61\":\"7#max-pool-size\",\"62\":\"7#conn-recycling-method\",\"63\":\"7#user\",\"64\":\"7#password\",\"65\":\"7#dbname\",\"66\":\"7#options\",\"67\":\"7#application-name\",\"68\":\"7#ssl-mode\",\"69\":\"7#ca-file\",\"70\":\"7#host\",\"71\":\"7#hostaddr\",\"72\":\"7#port\",\"73\":\"7#connect-timeout\",\"74\":\"7#tcp-user-timeout\",\"75\":\"7#target-session-attrs\",\"76\":\"7#load-balance-hosts\",\"77\":\"7#keepalives\",\"78\":\"7#keepalives-idle\",\"79\":\"7#keepalives-interval\",\"80\":\"7#keepalives-retries\",\"81\":\"8\",\"82\":\"8#cursor-parameters\",\"83\":\"8#cursor-as-async-iterator\",\"84\":\"8#cursor-methods\",\"85\":\"8#start\",\"86\":\"8#close\",\"87\":\"8#fetch\",\"88\":\"8#fetch-next\",\"89\":\"8#fetch-prior\",\"90\":\"8#fetch-first\",\"91\":\"8#fetch-last\",\"92\":\"8#fetch-absolute\",\"93\":\"8#fetch-relative\",\"94\":\"8#fetch-forward-all\",\"95\":\"8#fetch-backward\",\"96\":\"8#fetch-backward-all\",\"97\":\"9\",\"98\":\"9#exceptions-dependency\",\"99\":\"9#exceptions\",\"100\":\"9#rustpsqldriverpybaseerror\",\"101\":\"9#rusttopyvaluemappingerror\",\"102\":\"9#pytorustvaluemappingerror\",\"103\":\"9#uuidvalueconverterror\",\"104\":\"9#macaddrconversionerror\",\"105\":\"9#baseconnectionpoolerror\",\"106\":\"9#connectionpoolbuilderror\",\"107\":\"9#connectionpoolconfigurationerror\",\"108\":\"9#connectionpoolexecuteerror\",\"109\":\"9#baseconnectionerror\",\"110\":\"9#connectionexecuteerror\",\"111\":\"9#connectionclosederror\",\"112\":\"9#basetransactionerror\",\"113\":\"9#transactionbeginerror\",\"114\":\"9#transactioncommiterror\",\"115\":\"9#transactionrollbackerror\",\"116\":\"9#transactionsavepointerror\",\"117\":\"9#transactionexecuteerror\",\"118\":\"9#transactionclosederror\",\"119\":\"9#basecursorerror\",\"120\":\"9#cursorstarterror\",\"121\":\"9#cursorcloseerror\",\"122\":\"9#cursorfetcherror\",\"123\":\"9#cursorclosederror\",\"124\":\"10\",\"125\":\"10#queryresult-methods\",\"126\":\"10#result\",\"127\":\"10#parameters\",\"128\":\"10#as-class\",\"129\":\"10#parameters-1\",\"130\":\"10#row-factory\",\"131\":\"10#parameters-2\",\"132\":\"10#singlequeryresult-methods\",\"133\":\"10#result-1\",\"134\":\"10#parameters-3\",\"135\":\"10#as-class-1\",\"136\":\"10#parameters-4\",\"137\":\"10#row-factory-1\",\"138\":\"10#parameters-5\",\"139\":\"11\",\"140\":\"11#transaction-parameters\",\"141\":\"11#control-transaction-fully-on-your-own\",\"142\":\"11#control-transaction-with-async-context-manager\",\"143\":\"11#transaction-methods\",\"144\":\"11#begin\",\"145\":\"11#commit\",\"146\":\"11#execute\",\"147\":\"11#parameters\",\"148\":\"11#execute-batch\",\"149\":\"11#parameters-1\",\"150\":\"11#fetch\",\"151\":\"11#parameters-2\",\"152\":\"11#execute-many\",\"153\":\"11#parameters-3\",\"154\":\"11#fetch-row\",\"155\":\"11#parameters-4\",\"156\":\"11#fetch-val\",\"157\":\"11#parameters-5\",\"158\":\"11#pipeline\",\"159\":\"11#parameters-6\",\"160\":\"11#create-savepoint\",\"161\":\"11#parameters-7\",\"162\":\"11#rollback\",\"163\":\"11#rollback-savepoint\",\"164\":\"11#parameters-8\",\"165\":\"11#release-savepoint\",\"166\":\"11#parameters-9\",\"167\":\"11#cursor\",\"168\":\"11#parameters-10\",\"169\":\"12\",\"170\":\"12#components\",\"171\":\"12#connection-pool\",\"172\":\"13\",\"173\":\"13#important-notes\",\"174\":\"13#join-community\",\"175\":\"14\",\"176\":\"14#installation\",\"177\":\"14#first-request-to-the-database\",\"178\":\"15\",\"179\":\"16\",\"180\":\"16#complete-example\",\"181\":\"17\",\"182\":\"17#complete-example\",\"183\":\"18\",\"184\":\"18#standard-example\",\"185\":\"18#advanced-example\",\"186\":\"19\",\"187\":\"20\",\"188\":\"20#complete-example\",\"189\":\"21\",\"190\":\"21#complete-example\",\"191\":\"22\",\"192\":\"22#tuple-row\",\"193\":\"22#class-row\",\"194\":\"23\",\"195\":\"23#example\",\"196\":\"24\",\"197\":\"24#pass-unsupported-type-into-postgresql\",\"198\":\"24#decode-unsupported-type-from-postgresql\",\"199\":\"25\",\"200\":\"25#example\",\"201\":\"26\",\"202\":\"26#bigint-integer-smallint-float32-float64\",\"203\":\"26#pyvarchar-pytext\",\"204\":\"26#pyjson-pyjsonb\",\"205\":\"26#pymacaddr6-pymacaddr8\",\"206\":\"26#geo-types\",\"207\":\"27\",\"208\":\"27#simple-type\",\"209\":\"27#array-type\",\"210\":\"27#example\",\"211\":\"27#composite-type\",\"212\":\"27#enum-type\",\"213\":\"28\",\"214\":\"29\",\"215\":\"30\",\"216\":\"31\",\"217\":\"32\",\"218\":\"33\",\"219\":\"34\",\"220\":\"35\"},\"fieldIds\":{\"h\":0,\"t\":1,\"c\":2},\"fieldLength\":{\"0\":[2],\"1\":[3,61],\"2\":[3],\"3\":[3,16],\"4\":[1,93],\"5\":[2,43],\"6\":[2],\"7\":[2],\"8\":[2,79],\"9\":[3,63],\"10\":[4,30],\"11\":[1,63],\"12\":[3,10],\"13\":[6,25],\"14\":[4,30],\"15\":[6,13],\"16\":[4,29],\"17\":[3,45],\"18\":[4,31],\"19\":[4,9],\"20\":[4,51],\"21\":[1],\"22\":[1,49],\"23\":[1,21],\"24\":[1],\"25\":[2],\"26\":[1],\"27\":[2,68],\"28\":[2],\"29\":[2,58],\"30\":[1],\"31\":[2,56],\"32\":[2],\"33\":[2,76],\"34\":[2],\"35\":[2,63],\"36\":[2],\"37\":[1,61],\"38\":[1,13],\"39\":[2,43],\"40\":[3,47],\"41\":[2,61],\"42\":[4,196],\"43\":[6,37],\"44\":[5,22],\"45\":[6,23],\"46\":[6,29],\"47\":[3],\"48\":[1,21],\"49\":[2,15],\"50\":[1,23],\"51\":[1],\"52\":[2,88],\"53\":[1],\"54\":[2,55],\"55\":[1,22],\"56\":[1,30],\"57\":[1,16],\"58\":[3,51],\"59\":[2],\"60\":[1,6],\"61\":[3,6],\"62\":[3,10],\"63\":[1,5],\"64\":[1,5],\"65\":[1,7],\"66\":[1,10],\"67\":[2,9],\"68\":[2,5],\"69\":[2,6],\"70\":[1,46],\"71\":[1,34],\"72\":[1,39],\"73\":[2,30],\"74\":[3,38],\"75\":[3,27],\"76\":[3,10],\"77\":[1,18],\"78\":[2,30],\"79\":[2,30],\"80\":[2,29],\"81\":[1,16],\"82\":[2,28],\"83\":[4,57],\"84\":[2,11],\"85\":[1,11],\"86\":[1,11],\"87\":[1,35],\"88\":[2,18],\"89\":[2,16],\"90\":[2,16],\"91\":[2,16],\"92\":[2,24],\"93\":[2,25],\"94\":[3,18],\"95\":[2,24],\"96\":[3,18],\"97\":[1,30],\"98\":[3],\"99\":[2],\"100\":[1,7],\"101\":[1,24],\"102\":[1,33],\"103\":[1,13],\"104\":[1,11],\"105\":[1,8],\"106\":[1,8],\"107\":[1,6],\"108\":[1,6],\"109\":[1,6],\"110\":[1,5],\"111\":[1,7],\"112\":[1,7],\"113\":[1,5],\"114\":[1,5],\"115\":[1,5],\"116\":[1,5],\"117\":[1,5],\"118\":[1,7],\"119\":[1,6],\"120\":[1,5],\"121\":[1,5],\"122\":[1,6],\"123\":[1,7],\"124\":[1,25],\"125\":[2],\"126\":[1],\"127\":[1,38],\"128\":[2],\"129\":[1,55],\"130\":[2],\"131\":[1,11],\"132\":[2],\"133\":[1],\"134\":[1,40],\"135\":[2],\"136\":[1,57],\"137\":[2],\"138\":[1,11],\"139\":[1,20],\"140\":[2,16],\"141\":[7,98],\"142\":[7,85],\"143\":[2],\"144\":[1,14],\"145\":[1,13],\"146\":[1],\"147\":[2,70],\"148\":[2],\"149\":[2,61],\"150\":[1],\"151\":[2,60],\"152\":[2],\"153\":[2,53],\"154\":[2],\"155\":[1,65],\"156\":[2],\"157\":[1,64],\"158\":[1],\"159\":[1,125],\"160\":[2],\"161\":[2,21],\"162\":[1,15],\"163\":[2],\"164\":[2,24],\"165\":[2],\"166\":[2,23],\"167\":[1],\"168\":[1,69],\"169\":[2],\"170\":[1,37],\"171\":[2,27],\"172\":[4,105],\"173\":[2,51],\"174\":[3,14],\"175\":[3],\"176\":[1,21],\"177\":[5,103],\"178\":[1,4],\"179\":[1,21],\"180\":[2,63],\"181\":[1,21],\"182\":[2,71],\"183\":[1,9],\"184\":[3,113],\"185\":[2,116],\"186\":[2,4],\"187\":[1,21],\"188\":[2,73],\"189\":[1,21],\"190\":[2,58],\"191\":[3,9],\"192\":[2,38],\"193\":[2,41],\"194\":[3,45],\"195\":[2,56],\"196\":[3,44],\"197\":[5,86],\"198\":[5,113],\"199\":[2,70],\"200\":[2,30],\"201\":[2,66],\"202\":[5,128],\"203\":[2,84],\"204\":[2,104],\"205\":[2,66],\"206\":[2,101],\"207\":[2],\"208\":[2,102],\"209\":[2,22],\"210\":[2,9],\"211\":[2,78],\"212\":[2,81],\"213\":[2,4],\"214\":[1,3],\"215\":[1],\"216\":[1],\"217\":[1],\"218\":[1],\"219\":[2],\"220\":[1]},\"averageFieldLength\":[1.9819004524886885,36.22844612127801],\"storedFields\":{\"0\":{\"h\":\"PSQLPy documentation\"},\"1\":{\"h\":\"What is PSQLPy\",\"t\":[\"PSQLPy is a new Python driver for PostgreSQL fully written in Rust. It was inspired by Psycopg3 and AsyncPG. This project has two main goals: Make a interaction with the database as fast as possible and now PSQLPy shows itself to be times faster than the above drivers. Don't make useless abstractions and make it like a mirror to PostgreSQL.\",\"It has all necessary components to create high-load and fault tolerance applications.\"]},\"2\":{\"h\":\"How to install\"},\"3\":{\"h\":\"Join community!\",\"t\":[\"You can get support from the creators and users of PSQLPy in some social media:\",\"Telegram\"]},\"4\":{\"h\":\"Benchmarks\",\"t\":[\"You can find our benchmark setup here. These benchmarks aren't isolated from real-production situation. We've performed benchmarks with:\",\"AioHTTP as a web framework\",\"External and Local Database\",\"We checked the maximum possible RPS for the same SQL query in the same configuration.\",\"There are two types of benchmarks:\",\"With local database\",\"With external database\",\"In a real production system database doesn't usually locate on the same server where application runs, so if you application and database are located on the different servers, we recommend you to check External Database.\",\"Important\",\"For local benchmarks we use 5 connections in a connection pool and 10 processes make requests to the application, while for external database checks we use 40 connections and 100 processes make requests to the application. The main reason is external database is located on a very powerful server and can serve more requests.\"]},\"5\":{\"h\":\"Key findings\",\"t\":[\"If your application and database are located on the same server, there is no significant difference between AsyncPG, PsycoPG and PSQLPy but still you will have performance improve by approximately 10%. However, if you have application and database located on different machines, you can get significant (up to 3 times) boost in performance.\"]},\"6\":{\"h\":\"Local Database\"},\"7\":{\"h\":\"External Database\"},\"8\":{\"h\":\"Contribution guide\",\"t\":[\"We love contributions. This guide is for all fellas who want to make psqlpy better together.\",\"There are several rules for contributors:\",\"Please do not add malware.\",\"Please make sure that your request solves the problem.\",\"If you struggle with something or feel frustrated, you either create an issue, create a discussions. page or publish a draft PR and ask your question in the description.\",\"We have lots of tests in CI. But since CI runs from first-time contributors should be approved, you better test locally. It just takes less time to prepare PR for merging.\"]},\"9\":{\"h\":\"Setting up environment\",\"t\":[\"Since it's rust-first project you need to install rust on your computer. The best way to do it is check official site.\",\"After you install rust, you must prepare you python environment. One of the best ways is follow maturin offical documentation but below you can find all necessary commands.\",\"> python3 -m venv .venv > source .venv/bin/activate > pip install -U pip maturin \",\"Then you need to build PSQLPy project.\",\"maturin develop \",\"After this step project is built and installed in your python environment you created in previous step.\"]},\"10\":{\"h\":\"Linting and type checking\",\"t\":[\"We have pre-commit configured with all our settings. We highly recommend you to install it as a git hook using pre-commit install command.\",\"But even without installation, you can run all lints manually:\",\"pre-commit run -a \"]},\"11\":{\"h\":\"Testing\",\"t\":[\"You need to have PostgreSQL server somewhere to run pytest.\",\"Default credentials for testing PostgreSQL and you can configure it with env:\",\"host: localhost (env: POSTGRES_HOST)\",\"user: postgres (env: POSTGRES_USER)\",\"password: postgres (env: POSTGRES_PASSWORD)\",\"port: 5432 (env: POSTGRES_PORT)\",\"dbname: psqlpy_test (env: POSTGRES_DBNAME)\",\"We have tests with required SSL mode, so, if you don't want to run PostgreSQL in SSL mode, you could run\",\"pytest --ignore=\\\"./python/tests/test_ssl_mode.py\\\" \",\"If you have PostgreSQL with enabled ssl mode, you need to set path to your ca_file in POSTGRES_CERT_FILE env. And run\",\"pytest \"]},\"12\":{\"h\":\"Frequently asked questions\",\"t\":[\"Here you can find most common questions and problems.\"]},\"13\":{\"h\":\"LIMIT of OFFSET isn't working\",\"t\":[\"The main problem is PostgreSQL expects LIMIT and OFFSET to be BIGINT type but when you pass python int into parameters it converts to INTEGER.\"]},\"14\":{\"h\":\"Problem and Solution:\",\"t\":[\"from psqlpy import ConnectionPool from psqlpy.extra_types import BigInt # --- Incorrect --- async def main() -> None: pool = ConnectionPool() await pool.execute( querystring=\\\"SELECT * FROM users LIMIT $1 OFFSET $2\\\", parameters=[10, 100], ) # --- Correct --- async def main() -> None: pool = ConnectionPool() await pool.execute( querystring=\\\"SELECT * FROM users LIMIT $1 OFFSET $2\\\", parameters=[BigInt(10), BigInt(100)], ) \"]},\"15\":{\"h\":\"WHERE IN clause isn't working\",\"t\":[\"Instead of using WHERE <field> IN () clause you must use WHERE <field> = ANY().\"]},\"16\":{\"h\":\"Problem and Solution:\",\"t\":[\"from psqlpy import ConnectionPool # --- Incorrect --- async def main() -> None: pool = ConnectionPool() await pool.execute( querystring=\\\"SELECT * FROM users WHERE id IN ($1)\\\", parameters=[ (1, 2, 3), ], ) # --- Correct --- async def main() -> None: pool = ConnectionPool() await pool.execute( querystring=\\\"SELECT * FROM users WHERE id = ANY($1)\\\", parameters=[ (1, 2, 3), ], ) \"]},\"17\":{\"h\":\"Wrong binary data\",\"t\":[\"Example error: binary data has array element type 1043 (character varying) instead of expected 25 (text).\",\"This exception tells you that you use wrong data type and you need to specify types explicitly.\",\"For example, when we want to make WHERE clause with ANY and string values, we need to use TextArray, see example below:\"]},\"18\":{\"h\":\"Problem and Solution:\",\"t\":[\"from psqlpy import ConnectionPool from psqlpy.extra_types import TextArray # --- Incorrect --- async def main() -> None: pool = ConnectionPool() await pool.execute( querystring=\\\"SELECT * FROM users WHERE name = ANY($1)\\\", parameters=[ [\\\"Foo\\\", \\\"Bar\\\", \\\"Cafe\\\"], ], ) # --- Correct --- async def main() -> None: pool = ConnectionPool() await pool.execute( querystring=\\\"SELECT * FROM users WHERE name = ANY($1)\\\", parameters=[ TextArray([\\\"Foo\\\", \\\"Bar\\\", \\\"Cafe\\\"]), ], ) \"]},\"19\":{\"h\":\"Cannot insert empty ARRAY\",\"t\":[\"To insert empty array use explicit Array Type.\"]},\"20\":{\"h\":\"Problem and Solution:\",\"t\":[\"Let's assume that we have table arr_table with field some_array of VARCHAR ARRAY type. The main problem that we cannot determine the type of the empty sequence passed from Python side.\",\"from psqlpy import ConnectionPool from psqlpy.extra_types import VarCharArray # --- Incorrect --- async def main() -> None: pool = ConnectionPool() await pool.execute( querystring=\\\"INSERT INTO arr_table (some_array) VALUES ($1)\\\", parameters=[ [], ], ) # --- Correct --- async def main() -> None: pool = ConnectionPool() await pool.execute( querystring=\\\"INSERT INTO arr_table (some_array) VALUES ($1)\\\", parameters=[ VarCharArray([]), ], ) \"]},\"21\":{\"h\":\"Components\"},\"22\":{\"h\":\"Components\",\"t\":[\"ConnectionPool: holds connections in itself and give them when requested.\",\"ConnectionPoolBuilder: Chainable builder for ConnectionPool, for people who prefer it over big initialization.\",\"Connection: represents single database connection, can be retrieved from ConnectionPool.\",\"Transaction: represents database transaction, can be made from Connection.\",\"Cursor: represents database cursor, can be made from Transaction.\",\"QueryResult: represents list of results from database.\",\"SingleQueryResult: represents single result from the database.\",\"Exceptions: we have some custom exceptions.\"]},\"23\":{\"h\":\"Connection\",\"t\":[\"Connection object represents single connection to the PostgreSQL. You must work with database within it. Connection get be made with ConnectionPool().connection() method.\"]},\"24\":{\"h\":\"Usage\"},\"25\":{\"h\":\"Connection methods\"},\"26\":{\"h\":\"Execute\"},\"27\":{\"h\":\"Parameters:\",\"t\":[\"querystring: Statement string.\",\"parameters: List of parameters for the statement string.\",\"prepared: Prepare statement before execution or not.\",\"You can execute any query directly from Connection object. This method supports parameters, each parameter must be marked as $<number> in querystring (number starts with 1).\",\"async def main() -> None: ... connection = await db_pool.connection() results: QueryResult = await connection.execute( \\\"SELECT * FROM users WHERE id = $1 and username = $2\\\", [100, \\\"Alex\\\"], ) dict_results: list[dict[str, Any]] = results.result() \"]},\"28\":{\"h\":\"Execute Batch\"},\"29\":{\"h\":\"Parameters:\",\"t\":[\"querystring: querystrings separated by semicolons.\",\"Executes a sequence of SQL statements using the simple query protocol.\",\"Statements should be separated by semicolons. If an error occurs, execution of the sequence will stop at that point. This is intended for use when, for example, initializing a database schema.\",\"async def main() -> None: ... connection = await db_pool.connection() await connection.execute_batch( \\\"CREATE TABLE psqlpy (name VARCHAR); CREATE TABLE psqlpy2 (name VARCHAR);\\\", ) \"]},\"30\":{\"h\":\"Fetch\"},\"31\":{\"h\":\"Parameters:\",\"t\":[\"querystring: Statement string.\",\"parameters: List of parameters for the statement string.\",\"prepared: Prepare statement before execution or not.\",\"The same as the execute method, for some people this naming is preferable.\",\"async def main() -> None: ... connection = await db_pool.connection() results: QueryResult = await connection.fetch( \\\"SELECT * FROM users WHERE id = $1 and username = $2\\\", [100, \\\"Alex\\\"], ) dict_results: list[dict[str, Any]] = results.result() \"]},\"32\":{\"h\":\"Execute Many\"},\"33\":{\"h\":\"Parameters:\",\"t\":[\"querystring: Statement string.\",\"parameters: List of list of parameters for the statement string.\",\"prepared: Prepare statement before execution or not.\",\"This method supports parameters, each parameter must be marked as $<number> in querystring (number starts with 1). Atomicity is provided, so you don't need to worry about unsuccessful result, because there is a transaction used internally. This method returns nothing.\",\"async def main() -> None: ... connection = await db_pool.connection() await connection.execute_many( \\\"INSERT INTO users (name, age) VALUES ($1, $2)\\\", [[\\\"boba\\\", 10], [\\\"boba\\\", 20]], ) \"]},\"34\":{\"h\":\"Fetch Row\"},\"35\":{\"h\":\"Parameters:\",\"t\":[\"querystring: Statement string.\",\"parameters: List of list of parameters for the statement string.\",\"prepared: Prepare statements before execution or not.\",\"Sometimes you need to fetch only first row from the result.\",\"Warning\",\"Querystring must return exactly one result or an exception will be raised.\",\"async def main() -> None: ... connection = await db_pool.connection() query_result: SingleQueryResult = await transaction.fetch_row( \\\"SELECT username FROM users WHERE id = $1\\\", [100], ) dict_result: Dict[Any, Any] = query_result.result() \"]},\"36\":{\"h\":\"Fetch Val\"},\"37\":{\"h\":\"Parameters\",\"t\":[\"querystring: Statement string.\",\"parameters: List of list of parameters for the statement string.\",\"prepared: Prepare statements before execution or not.\",\"If you need to retrieve some value not QueryResult.\",\"Warning\",\"Querystring must return exactly one result or an exception will be raised.\",\"async def main() -> None: ... connection = await db_pool.connection() # this will be an int value query_result_value = await connection.fetch_row( \\\"SELECT COUNT(*) FROM users WHERE id > $1\\\", [100], ) \"]},\"38\":{\"h\":\"Transaction\",\"t\":[\"Connection is the only object that can be used to build Transaction object.\"]},\"39\":{\"h\":\"Parameters:\",\"t\":[\"isolation_level: level of isolation. Default how it is in PostgreSQL.\",\"read_variant: configure read variant of the transaction. Default how it is in PostgreSQL.\",\"deferrable: configure deferrable of the transaction. Default how it is in PostgreSQL.\",\"synchronous_commit: configure synchronous_commit option for transaction. Default how it is in PostgreSQL.\",\"from psqlpy import IsolationLevel, ReadVariant, SynchronousCommit async def main() -> None: ... connection = await db_pool.connection() transaction = connection.transaction( isolation_level=IsolationLevel.Serializable, read_variant=ReadVariant.ReadWrite, deferrable=True, synchronous_commit=SynchronousCommit.On, ) \"]},\"40\":{\"h\":\"Back To Pool\",\"t\":[\"Returns connection to the pool. It's crucial to commit all transactions and close all cursor which are made from the connection. Otherwise, this method won't do anything useful.\",\"Tips\",\"There is no need in this method if you use async context manager.\",\"async def main() -> None: ... connection = await db_pool.connection() connection.back_to_pool() \"]},\"41\":{\"h\":\"Connection Pool\",\"t\":[\"Connection pool is the main object in the library. It initializes, creates, holds and gives connection to the user side. Connection pool must be started up before any other operations.\",\"Important\",\"You cannot set the minimum size for the connection pool, by it is 0.\",\"ConnectionPool doesn't create connection on startup. It makes new connection on demand.\",\"So, if you set max_db_pool_size to 100, pool will create new connection every time there aren't enough connections to handle the load.\"]},\"42\":{\"h\":\"All available ConnectionPool parameters\",\"t\":[\"dsn: Full dsn connection string. postgres://postgres:postgres@localhost:5432/postgres?target_session_attrs=read-write\",\"username: Username of the user in the PostgreSQL\",\"password: Password of the user in the PostgreSQL\",\"host: Host of the PostgreSQL\",\"hosts: Hosts of the PostgreSQL\",\"port: Port of the PostgreSQL\",\"ports: Ports of the PostgreSQL\",\"db_name: Name of the database in PostgreSQL\",\"target_session_attrs: Specifies requirements of the session.\",\"options: Command line options used to configure the server\",\"application_name: Sets the application_name parameter on the server.\",\"connect_timeout_sec: The time limit in seconds applied to each socket-level connection attempt. Note that hostnames can resolve to multiple IP addresses, and this limit is applied to each address. Defaults to no timeout.\",\"connect_timeout_nanosec: nanosec for connection timeout, can be used only with connect_timeout_sec.\",\"tcp_user_timeout_sec: The time limit that transmitted data may remain unacknowledged before a connection is forcibly closed. This is ignored for Unix domain socket connections. It is only supported on systems where TCP_USER_TIMEOUT is available and will default to the system default if omitted or set to 0; on other systems, it has no effect.\",\"tcp_user_timeout_nanosec: nanosec for cp_user_timeout, can be used only with tcp_user_timeout_sec.\",\"keepalives: Controls the use of TCP keepalive. This option is ignored when connecting with Unix sockets. Defaults to on.\",\"keepalives_idle_sec: The number of seconds of inactivity after which a keepalive message is sent to the server. This option is ignored when connecting with Unix sockets. Defaults to 2 hours.\",\"keepalives_idle_nanosec: Nanosec for keepalives_idle_sec.\",\"keepalives_interval_sec: The time interval between TCP keepalive probes. This option is ignored when connecting with Unix sockets.\",\"keepalives_interval_nanosec: Nanosec for keepalives_interval_sec.\",\"keepalives_retries: The maximum number of TCP keepalive probes that will be sent before dropping a connection. This option is ignored when connecting with Unix sockets.\",\"load_balance_hosts: Controls the order in which the client tries to connect to the available hosts and addresses. Once a connection attempt is successful no other hosts and addresses will be tried. This parameter is typically used in combination with multiple host names or a DNS record that returns multiple IPs. If set to disable, hosts and addresses will be tried in the order provided. If set to random, hosts will be tried in a random order, and the IP addresses resolved from a hostname will also be tried in a random order. Defaults to disable.\",\"max_db_pool_size: maximum size of the connection pool.\",\"conn_recycling_method: how a connection is recycled.\",\"ssl_mode: ssl mode.\",\"ca_file: path to ca_file for ssl.\",\"Example of possible dsns:\",\"postgresql://user@localhost postgresql://user:password@%2Fvar%2Flib%2Fpostgresql/mydb?connect_timeout=10 postgresql://user@host1:1234,host2,host3:5678?target_session_attrs=read-write postgresql:///mydb?user=user&host=/var/lib/postgresql \",\"Important\",\"If dsn is specified then username, password, host, hosts, port, ports, db_name and target_session_attrs parameters will be ignored.\"]},\"43\":{\"h\":\"Initialize Connection Pool with separate parameters\",\"t\":[\"There are two ways of how to connect to the database. First one is use connection parameters separately:\",\"import asyncio from typing import Final from psqlpy import ConnectionPool db_pool: Final = ConnectionPool( username=\\\"postgres\\\", password=\\\"postgres\\\", host=\\\"localhost\\\", port=5432, db_name=\\\"postgres\\\", max_db_pool_size=10, ) \"]},\"44\":{\"h\":\"Initialize Connection Pool with DSN\",\"t\":[\"Other way is use DSN:\",\"import asyncio from typing import Final from psqlpy import ConnectionPool db_pool: Final = ConnectionPool( dsn=\\\"postgres://postgres:postgres@localhost:5432/postgres\\\", max_db_pool_size=10, ) \"]},\"45\":{\"h\":\"Create Connection Pool with one function\",\"t\":[\"from typing import Final from psqlpy import connect db_pool: Final = connect( dsn=\\\"postgres://postgres:postgres@localhost:5432/postgres\\\", max_db_pool_size=10, ) \",\"connect function has the same parameters as ConnectionPool.\"]},\"46\":{\"h\":\"Use Connection Pool as context manager\",\"t\":[\"from typing import Final from psqlpy import ConnectionPool async def main() -> None: with ConnectionPool( dsn=\\\"postgres://postgres:postgres@localhost:5432/postgres\\\", max_db_pool_size=10, ) as db_pool: # ConnectionPool is opened await db_pool.execute(\\\"SOME_SQL\\\") # ConnectionPool is opened # ConnectionPool is closed \"]},\"47\":{\"h\":\"Connection pool methods\"},\"48\":{\"h\":\"Resize\",\"t\":[\"Resize connection pool capacity.\",\"This change the max_size of the pool dropping excess objects and/or making space for new ones.\"]},\"49\":{\"h\":\"Parameters:\",\"t\":[\"new_max_size: new size of the pool.\",\"async def main() -> None: ... db_pool.resize(15) \"]},\"50\":{\"h\":\"Status\",\"t\":[\"Retrieve status of the connection pool.\",\"It has 4 parameters:\",\"max_size - maximum possible size of the connection pool.\",\"size - current size of the connection pool.\",\"available - available connection in the connection pool.\",\"waiting - waiting requests to retrieve connection from connection pool.\"]},\"51\":{\"h\":\"Execute\"},\"52\":{\"h\":\"Parameters:\",\"t\":[\"querystring: Statement string.\",\"parameters: List of parameters for the statement string.\",\"prepared: Prepare statement before execution or not.\",\"You can execute any query directly from Connection Pool. This method supports parameters, each parameter must be marked as $<number> (number starts with 1). Parameters must be passed as list after querystring.\",\"Caution\",\"You must use ConnectionPool.execute method in high-load production code wisely! It pulls connection from the pool each time you execute query. Preferable way to execute statements with Connection or Transaction\",\"async def main() -> None: ... results: QueryResult = await db_pool.execute( \\\"SELECT * FROM users WHERE id = $1 and username = $2\\\", [100, \\\"Alex\\\"], ) dict_results: list[dict[str, Any]] = results.result() \"]},\"53\":{\"h\":\"Fetch\"},\"54\":{\"h\":\"Parameters:\",\"t\":[\"querystring: Statement string.\",\"parameters: List of parameters for the statement string.\",\"prepared: Prepare statement before execution or not.\",\"The same as the execute method, for some people this naming is preferable.\",\"async def main() -> None: ... results: QueryResult = await db_pool.fetch( \\\"SELECT * FROM users WHERE id = $1 and username = $2\\\", [100, \\\"Alex\\\"], ) dict_results: list[dict[str, Any]] = results.result() \"]},\"55\":{\"h\":\"Acquire\",\"t\":[\"Get single connection for async context manager. Must be used only in async context manager.\",\"async def main() -> None: ... async with db_pool.acquire() as connection: ... \"]},\"56\":{\"h\":\"Connection\",\"t\":[\"To get single connection from the ConnectionPool there is method named connection().\",\"async def main() -> None: ... connection = await db_pool.connection() \",\"Cool tip\",\"This is the preferable way to work with the PostgreSQL.\"]},\"57\":{\"h\":\"Close\",\"t\":[\"To close the connection pool at the stop of your application.\",\"def main() -> None: ... db_pool.close() \"]},\"58\":{\"h\":\"Connection Pool Builder\",\"t\":[\"Component allows you to create ConnectionPool with chainable methods. It doesn't have any difference from classic python-way initialization.\",\"Every method has robust docstring but you can check all available methods here.\",\"from psqlpy import ConnectionPoolBuilder database_pool = ( ConnectionPoolBuilder() .max_pool_size(10) .user(\\\"psqlpy\\\") .password(\\\"psqlpy\\\") .dbname(\\\"psqlpy\\\") .host(\\\"192.0.0.1\\\") .port(5432) .build() ) \"]},\"59\":{\"h\":\"ConnectionPoolBuilder methods\"},\"60\":{\"h\":\"build\",\"t\":[\"Create new ConnectionPool from ConnectionPoolBuilder.\"]},\"61\":{\"h\":\"max_pool_size\",\"t\":[\"Set maximum connection pool size.\"]},\"62\":{\"h\":\"conn_recycling_method\",\"t\":[\"Set connection recycling method.\",\"Connection recycling method is how a connection is recycled.\"]},\"63\":{\"h\":\"user\",\"t\":[\"Set username to PostgreSQL.\"]},\"64\":{\"h\":\"password\",\"t\":[\"Set password for PostgreSQL.\"]},\"65\":{\"h\":\"dbname\",\"t\":[\"Set database name for the PostgreSQL.\"]},\"66\":{\"h\":\"options\",\"t\":[\"Set command line options used to configure the server.\"]},\"67\":{\"h\":\"application_name\",\"t\":[\"Set the value of the application_name runtime parameter.\"]},\"68\":{\"h\":\"ssl_mode\",\"t\":[\"Set the SSL configuration.\"]},\"69\":{\"h\":\"ca_file\",\"t\":[\"Set ca_file for SSL.\"]},\"70\":{\"h\":\"host\",\"t\":[\"Add a host to the configuration.\",\"Multiple hosts can be specified by calling this method multiple times, and each will be tried in order. On Unix systems, a host starting with a / is interpreted as a path to a directory containing Unix domain sockets. There must be either no hosts, or the same number of hosts as hostaddrs.\"]},\"71\":{\"h\":\"hostaddr\",\"t\":[\"Add a hostaddr to the configuration.\",\"Multiple hostaddrs can be specified by calling this method multiple times, and each will be tried in order. There must be either no hostaddrs, or the same number of hostaddrs as hosts.\"]},\"72\":{\"h\":\"port\",\"t\":[\"Add a port to the configuration.\",\"Multiple ports can be specified by calling this method multiple times. There must either be no ports, in which case the default of 5432 is used, a single port, in which it is used for all hosts, or the same number of ports as hosts.\"]},\"73\":{\"h\":\"connect_timeout\",\"t\":[\"Set the timeout applied to socket-level connection attempts.\",\"Note that hostnames can resolve to multiple IP addresses, and this timeout will apply to each address of each host separately. Defaults to no limit.\"]},\"74\":{\"h\":\"tcp_user_timeout\",\"t\":[\"Set the TCP user timeout.\",\"This is ignored for Unix domain socket connections. It is only supported on systems where TCP_USER_TIMEOUT is available and will default to the system default if omitted or set to 0; on other systems, it has no effect.\"]},\"75\":{\"h\":\"target_session_attrs\",\"t\":[\"Set the requirements of the session.\",\"This can be used to connect to the primary server in a clustered database rather than one of the read-only secondary servers. Defaults to Any.\"]},\"76\":{\"h\":\"load_balance_hosts\",\"t\":[\"Set the host load balancing behavior.\",\"Defaults to disable.\"]},\"77\":{\"h\":\"keepalives\",\"t\":[\"Control the use of TCP keepalive.\",\"This is ignored for Unix domain socket connections.\",\"Defaults to true.\"]},\"78\":{\"h\":\"keepalives_idle\",\"t\":[\"Set the amount of idle time before a keepalive packet is sent on the connection.\",\"This is ignored for Unix domain sockets, or if the keepalives option is disabled.\",\"Defaults to 2 hours.\"]},\"79\":{\"h\":\"keepalives_interval\",\"t\":[\"Sets the time interval between TCP keepalive probes.\",\"On Windows, this sets the value of the tcp_keepalive struct keepalive interval field.\",\"This is ignored for Unix domain sockets, or if the keepalives option is disabled.\"]},\"80\":{\"h\":\"keepalives_retries\",\"t\":[\"Sets the maximum number of TCP keepalive probes that will be sent before dropping a connection.\",\"This is ignored for Unix domain sockets, or if the keepalives option is disabled.\"]},\"81\":{\"h\":\"Cursor\",\"t\":[\"Cursor objects represents real Cursor in the PostgreSQL. PostgreSQL docs It can be built only from Transaction.\"]},\"82\":{\"h\":\"Cursor Parameters\",\"t\":[\"querystring: specify query for cursor.\",\"parameters: parameters for the querystring. Default None\",\"fetch_number: default fetch number. It is used in fetch() method and in async iterator. Default 10\",\"scroll: is cursor scrollable or not. Default as in PostgreSQL.\"]},\"83\":{\"h\":\"Cursor as async iterator\",\"t\":[\"The most common situation is using Cursor as async iterator.\",\"from psqlpy import ConnectionPool, QueryResult async def main() -> None: db_pool = ConnectionPool() connection = await db_pool.connection() transaction = await connection.transaction() # Here we fetch 5 results in each iteration. async with cursor in transaction.cursor( querystring=\\\"SELECT * FROM users WHERE username = $1\\\", parameters=[\\\"Some_Username\\\"], fetch_number=5, ): async for fetched_result in cursor: dict_result: List[Dict[Any, Any]] = fetched_result.result() ... # do something with this result. \"]},\"84\":{\"h\":\"Cursor methods\",\"t\":[\"There are a lot of methods to work with cursor.\"]},\"85\":{\"h\":\"Start\",\"t\":[\"Declare (create) cursor.\",\"async def main() -> None: await cursor.start() \"]},\"86\":{\"h\":\"Close\",\"t\":[\"Close the cursor\",\"async def main() -> None: await cursor.close() \"]},\"87\":{\"h\":\"Fetch\",\"t\":[\"You can fetch next N records from the cursor. It's possible to specify N fetch record with parameter fetch_number, otherwise will be used fetch_number from the Cursor initialization.\",\"async def main() -> None: result: QueryResult = await cursor.fetch( fetch_number=100, ) \"]},\"88\":{\"h\":\"Fetch Next\",\"t\":[\"Just fetch next record from the Cursor.\",\"async def main() -> None: result: QueryResult = await cursor.fetch_next() \"]},\"89\":{\"h\":\"Fetch Prior\",\"t\":[\"Just fetch previous record.\",\"async def main() -> None: result: QueryResult = await cursor.fetch_prior() \"]},\"90\":{\"h\":\"Fetch First\",\"t\":[\"Just fetch the first record.\",\"async def main() -> None: result: QueryResult = await cursor.fetch_first() \"]},\"91\":{\"h\":\"Fetch Last\",\"t\":[\"Just fetch the last record.\",\"async def main() -> None: result: QueryResult = await cursor.fetch_last() \"]},\"92\":{\"h\":\"Fetch Absolute\",\"t\":[\"Just fetch absolute records. It has absolute_number parameter, you must specify it.\",\"async def main() -> None: result: QueryResult = await cursor.fetch_absolute( absolute_number=10, ) \"]},\"93\":{\"h\":\"Fetch Relative\",\"t\":[\"Just fetch absolute records. It has relative_number parameter, you must specify it.\",\"async def main() -> None: result: QueryResult = await cursor.fetch_relative( relative_number=10, ) \"]},\"94\":{\"h\":\"Fetch Forward All\",\"t\":[\"Fetch forward all records in the cursor.\",\"async def main() -> None: result: QueryResult = await cursor.fetch_forward_all() \"]},\"95\":{\"h\":\"Fetch Backward\",\"t\":[\"Just backward records. It has backward_count parameter, you must specify it.\",\"async def main() -> None: result: QueryResult = await cursor.fetch_backward( backward_count=10, ) \"]},\"96\":{\"h\":\"Fetch Backward All\",\"t\":[\"Fetch backward all records in the cursor.\",\"async def main() -> None: result: QueryResult = await cursor.fetch_backward_all() \"]},\"97\":{\"h\":\"Exceptions\",\"t\":[\"We have a lot of exceptions for different situations. They are split into different subclasses for ConnectionPool, Connection, Transaction and Cursor.\",\"You can use them to define code behavior based on exceptions.\"]},\"98\":{\"h\":\"Exceptions dependency:\"},\"99\":{\"h\":\"Exceptions:\"},\"100\":{\"h\":\"RustPSQLDriverPyBaseError\",\"t\":[\"Main bas exception for all errors.\"]},\"101\":{\"h\":\"RustToPyValueMappingError\",\"t\":[\"Error if it is not possible to covert rust type to python.\",\"You can get it if you database contains data type that it not supported by this library.\"]},\"102\":{\"h\":\"PyToRustValueMappingError\",\"t\":[\"Error if it is not possible to covert python type to rust.\",\"You can get this exception when executing queries with parameters. So, if there are no parameters for the query, don't handle this error.\"]},\"103\":{\"h\":\"UUIDValueConvertError\",\"t\":[\"Error if it's impossible to convert py string UUID into rust UUID.\"]},\"104\":{\"h\":\"MacAddrConversionError\",\"t\":[\"Error if cannot convert MacAddr string value to rust type.\"]},\"105\":{\"h\":\"BaseConnectionPoolError\",\"t\":[\"Base error for all Connection Pool errors.\"]},\"106\":{\"h\":\"ConnectionPoolBuildError\",\"t\":[\"Error for errors in building connection pool.\"]},\"107\":{\"h\":\"ConnectionPoolConfigurationError\",\"t\":[\"Error in connection pool configuration.\"]},\"108\":{\"h\":\"ConnectionPoolExecuteError\",\"t\":[\"Error in connection pool execution.\"]},\"109\":{\"h\":\"BaseConnectionError\",\"t\":[\"Base error for Connection errors.\"]},\"110\":{\"h\":\"ConnectionExecuteError\",\"t\":[\"Error in connection execution.\"]},\"111\":{\"h\":\"ConnectionClosedError\",\"t\":[\"Error if underlying connection is closed.\"]},\"112\":{\"h\":\"BaseTransactionError\",\"t\":[\"Base error for all transaction errors.\"]},\"113\":{\"h\":\"TransactionBeginError\",\"t\":[\"Error in transaction begin.\"]},\"114\":{\"h\":\"TransactionCommitError\",\"t\":[\"Error in transaction commit.\"]},\"115\":{\"h\":\"TransactionRollbackError\",\"t\":[\"Error in transaction rollback.\"]},\"116\":{\"h\":\"TransactionSavepointError\",\"t\":[\"Error in transaction savepoint.\"]},\"117\":{\"h\":\"TransactionExecuteError\",\"t\":[\"Error in transaction execution.\"]},\"118\":{\"h\":\"TransactionClosedError\",\"t\":[\"Error if underlying connection is closed.\"]},\"119\":{\"h\":\"BaseCursorError\",\"t\":[\"Base error for Cursor errors.\"]},\"120\":{\"h\":\"CursorStartError\",\"t\":[\"Error in cursor declare.\"]},\"121\":{\"h\":\"CursorCloseError\",\"t\":[\"Error in cursor close.\"]},\"122\":{\"h\":\"CursorFetchError\",\"t\":[\"Error in cursor fetch (any fetch).\"]},\"123\":{\"h\":\"CursorClosedError\",\"t\":[\"Error if underlying connection is closed.\"]},\"124\":{\"h\":\"Results\",\"t\":[\"Results are objects that driver returns to python with some data inside.\",\"Currently there are two results:\",\"QueryResult - for result with multiple rows\",\"SingleQueryResult - for result with exactly one row\"]},\"125\":{\"h\":\"QueryResult methods\"},\"126\":{\"h\":\"Result\"},\"127\":{\"h\":\"Parameters\",\"t\":[\"custom_decoders: custom decoders for unsupported types. Read more\",\"Get the result as a list of dicts\",\"async def main() -> None: db_pool = ConnectionPool() connection = await db_pool.connection() query_result: QueryResult = await connection.execute( \\\"SELECT username FROM users\\\", [], ) result: List[Dict[str, Any]] = query_result.result() \"]},\"128\":{\"h\":\"As class\"},\"129\":{\"h\":\"Parameters\",\"t\":[\"as_class: Custom class from Python.\",\"custom_decoders: custom decoders for unsupported types. Read more\",\"Get the result as a list of passed class instances. Passed class can easily be either pydantic or msgspec model.\",\"class ExampleOfAsClass: def __init__(self, username: str) -> None: self.username = username async def main() -> None: db_pool = ConnectionPool() connection = await db_pool.connection() query_result: QueryResult = await connection.execute( \\\"SELECT username FROM users\\\", [], ) class_results: List[ExampleOfAsClass] = query_result.as_class( as_class=ExampleOfAsClass, ) \"]},\"130\":{\"h\":\"Row Factory\"},\"131\":{\"h\":\"Parameters\",\"t\":[\"row_factory: custom callable object.\",\"custom_decoders: custom decoders for unsupported types. Read more\",\"Read more\"]},\"132\":{\"h\":\"SingleQueryResult methods\"},\"133\":{\"h\":\"Result\"},\"134\":{\"h\":\"Parameters\",\"t\":[\"custom_decoders: custom decoders for unsupported types. Read more\",\"Get the result as a dict\",\"async def main() -> None: db_pool = ConnectionPool() connection = await db_pool.connection() query_result: SingleQueryResult = await db_pool.fetch_row( \\\"SELECT username FROM users WHERE id = $1\\\", [100], ) result: Dict[str, Any] = query_result.result() \"]},\"135\":{\"h\":\"As class\"},\"136\":{\"h\":\"Parameters\",\"t\":[\"as_class: Custom class from Python.\",\"custom_decoders: custom decoders for unsupported types. Read more\",\"Get the result as a passed class instance. Passed class can easily be either pydantic or msgspec model.\",\"class ExampleOfAsClass: def __init__(self, username: str) -> None: self.username = username async def main() -> None: db_pool = ConnectionPool() connection = await db_pool.connection() query_result: SingleQueryResult = await connection.fetch_row( \\\"SELECT username FROM users WHERE id = $1\\\", [100], ) class_results: ExampleOfAsClass = query_result.as_class( as_class=ExampleOfAsClass, ) \"]},\"137\":{\"h\":\"Row Factory\"},\"138\":{\"h\":\"Parameters\",\"t\":[\"row_factory: custom callable object.\",\"custom_decoders: custom decoders for unsupported types. Read more\",\"Read more\"]},\"139\":{\"h\":\"Transaction\",\"t\":[\"Transaction object represents PostgreSQL transaction. There are two ways of how we can work with transactions on PSQLPy side.\"]},\"140\":{\"h\":\"Transaction parameters\",\"t\":[\"isolation_level: level of isolation. Default how it is in PostgreSQL.\",\"read_variant: configure read variant of the transaction. Default how it is in PostgreSQL.\",\"deferrable: configure deferrable of the transaction. Default how it is in PostgreSQL.\"]},\"141\":{\"h\":\"Control transaction fully on your own.\",\"t\":[\"First of all, you can get transaction object only from connection object.\",\"from psqlpy import ConnectionPool db_pool: Final = ConnectionPool( dsn=\\\"postgres://postgres:postgres@localhost:5432/postgres\\\", ) async def main() -> None: connection = await db_pool.connection() transaction = connection.transaction() \",\"After this you need to start you transaction or in PostgreSQL terms you need to BEGIN it.\",\"async def main() -> None: ... connection = await db_pool.connection() transaction = connection.transaction() await transaction.begin() \",\"So, after these manipulations you are ready to make you first query with the transaction.\",\"async def main() -> None: ... await transaction.execute( \\\"INSERT INTO users (id, username) VALUES ($1, $2)\\\", [\\\"100\\\", \\\"Alex\\\"], ) \",\"Good! We've inserted our first row, but if we won't commit the transaction all changes will discard.\",\"Warning\",\"We need to commit changes.\",\"async def main() -> None: ... await transaction.commit() \",\"So, now everything is fine, changes are committed. But you can say that it's too complicated and you are right! We have an alternative way to handle begin() and commit() automatically.\"]},\"142\":{\"h\":\"Control transaction with async context manager.\",\"t\":[\"There is the previous example but it is rewritten with use of async context manager.\",\"from psqlpy import ConnectionPool db_pool: Final = ConnectionPool( dsn=\\\"postgres://postgres:postgres@localhost:5432/postgres\\\", ) async def main() -> None: await db_pool.startup() connection = await db_pool.connection() async with connection.transaction() as transaction: # begin() calls automatically await transaction.execute( \\\"INSERT INTO users (id, username) VALUES ($1, $2)\\\", [\\\"100\\\", \\\"Alex\\\"], ) # commit() calls automatically. \",\"Cool tip\",\"If a query raises an error in our async context manager, ROLLBACK is executed automatically.\",\"Important\",\"Transaction can be began only once, so if you have already called begin() manually then async context manager initialize will fail, you need to choose what to use.\"]},\"143\":{\"h\":\"Transaction methods\"},\"144\":{\"h\":\"Begin\",\"t\":[\"You can start a transaction manually.\",\"async def main() -> None: ... await transaction.begin() ... \"]},\"145\":{\"h\":\"Commit\",\"t\":[\"You can commit a transaction manually.\",\"async def main() -> None: ... await transaction.commit() ... \"]},\"146\":{\"h\":\"Execute\"},\"147\":{\"h\":\"Parameters:\",\"t\":[\"querystring: Statement string.\",\"parameters: List of parameters for the statement string.\",\"prepared: Prepare statement before execution or not.\",\"You can execute any query directly from Transaction object. This method supports parameters, each parameter must be marked as $<number> (number starts with 1).\",\"async def main() -> None: ... connection = await db_pool.connection() async with connection.transaction() as transaction: results: QueryResult = await transaction.execute( querystring=\\\"SELECT * FROM users WHERE id = $1 and username = $2\\\", parameters=[100, \\\"Alex\\\"], ) dict_results: list[dict[str, Any]] = results.result() \"]},\"148\":{\"h\":\"Execute Batch\"},\"149\":{\"h\":\"Parameters:\",\"t\":[\"querystring: querystrings separated by semicolons.\",\"Executes a sequence of SQL statements using the simple query protocol.\",\"Statements should be separated by semicolons. If an error occurs, execution of the sequence will stop at that point. This is intended for use when, for example, initializing a database schema.\",\"async def main() -> None: ... connection = await db_pool.connection() async with connection.transaction() as transaction: await transaction.execute_batch( \\\"CREATE TABLE psqlpy (name VARCHAR); CREATE TABLE psqlpy2 (name VARCHAR);\\\", ) \"]},\"150\":{\"h\":\"Fetch\"},\"151\":{\"h\":\"Parameters:\",\"t\":[\"querystring: Statement string.\",\"parameters: List of parameters for the statement string.\",\"prepared: Prepare statement before execution or not.\",\"The same as the execute method, for some people this naming is preferable.\",\"async def main() -> None: ... connection = await db_pool.connection() async with connection.transaction() as transaction: results: QueryResult = await transaction.fetch( querystring=\\\"SELECT * FROM users WHERE id = $1 and username = $2\\\", parameters=[100, \\\"Alex\\\"], ) dict_results: list[dict[str, Any]] = results.result() \"]},\"152\":{\"h\":\"Execute Many\"},\"153\":{\"h\":\"Parameters:\",\"t\":[\"querystring: Statement string.\",\"parameters: List of list of parameters for the statement string.\",\"prepared: Prepare statements before execution or not.\",\"If you want to execute the same querystring, but with different parameters, execute_many is for you!\",\"async def main() -> None: ... connection = await db_pool.connection() async with connection.transaction() as transaction: await transaction.execute_many( \\\"INSERT INTO users (name, age) VALUES ($1, $2)\\\", [[\\\"boba\\\", 10], [\\\"biba\\\", 20]], ) \"]},\"154\":{\"h\":\"Fetch Row\"},\"155\":{\"h\":\"Parameters\",\"t\":[\"querystring: Statement string.\",\"parameters: List of list of parameters for the statement string.\",\"prepared: Prepare statements before execution or not.\",\"Sometimes you need to fetch only first row from the result.\",\"Warning\",\"Querystring must return exactly one result or an exception will be raised.\",\"async def main() -> None: ... connection = await db_pool.connection() async with connection.transaction() as transaction: query_result: SingleQueryResult = await transaction.fetch_row( \\\"SELECT username FROM users WHERE id = $1\\\", [100], ) dict_result: Dict[Any, Any] = query_result.result() \"]},\"156\":{\"h\":\"Fetch Val\"},\"157\":{\"h\":\"Parameters\",\"t\":[\"querystring: Statement string.\",\"parameters: List of list of parameters for the statement string.\",\"prepared: Prepare statements before execution or not.\",\"If you need to retrieve some value not QueryResult.\",\"Warning\",\"Querystring must return exactly one result or an exception will be raised.\",\"async def main() -> None: ... connection = await db_pool.connection() async with connection.transaction() as transaction: # this will be an int value query_result_value = await transaction.fetch_row( \\\"SELECT COUNT(*) FROM users WHERE id > $1\\\", [100], ) \"]},\"158\":{\"h\":\"Pipeline\"},\"159\":{\"h\":\"Parameters\",\"t\":[\"queries: list of tuple. It must have structure like\",\"prepared: should the querystring/querystrings be prepared before the request. By default any querystrings will be prepared.\",\"queries = [ (\\\"SELECT * FROM users WHERE name = $1\\\", [\\\"some_name\\\"]), (\\\"SELECT 1\\\", None), ] \",\"prepared: Prepare statements before execution or not.\",\"Execute queries in pipeline. Pipelining can improve performance in use cases in which multiple, independent queries need to be executed. In a traditional workflow, each query is sent to the server after the previous query completes. In contrast, pipelining allows the client to send all of the queries to the server up front, minimizing time spent by one side waiting for the other to finish sending data:\",\" Sequential Pipelined | Client | Server | | Client | Server | |----------------|-----------------| |----------------|-----------------| | send query 1 | | | send query 1 | | | | process query 1 | | send query 2 | process query 1 | | receive rows 1 | | | send query 3 | process query 2 | | send query 2 | | | receive rows 1 | process query 3 | | | process query 2 | | receive rows 2 | | | receive rows 2 | | | receive rows 3 | | | send query 3 | | | | process query 3 | | receive rows 3 | | \",\"Read more!\",\"Full example:\",\"import asyncio from psqlpy import ConnectionPool, QueryResult async def main() -> None: db_pool = ConnectionPool() await db_pool.startup() connection = await db_pool.connection() transaction = connection.transaction() results: list[QueryResult] = await transaction.pipeline( queries=[ ( \\\"SELECT username FROM users WHERE id = $1\\\", [100], ), ( \\\"SELECT some_data FROM profiles\\\", None, ), ( \\\"INSERT INTO users (username, id) VALUES ($1, $2)\\\", [\\\"PSQLPy\\\", 1], ), ] ) \"]},\"160\":{\"h\":\"Create Savepoint\"},\"161\":{\"h\":\"Parameters:\",\"t\":[\"savepoint_name: name of the new savepoint.\",\"Savepoint creation. PostgreSQL docs\",\"async def main() -> None: ... await transaction.create_savepoint(\\\"my_savepoint\\\") await transaction.execute(...) await transaction.rollback_savepoint(\\\"my_savepoint\\\") \"]},\"162\":{\"h\":\"Rollback\",\"t\":[\"Rollback the whole transaction. PostgreSQL docs\",\"async def main() -> None: ... await transaction.execute(...) await transaction.rollback() \"]},\"163\":{\"h\":\"Rollback Savepoint\"},\"164\":{\"h\":\"Parameters:\",\"t\":[\"savepoint_name: name of the new savepoint.\",\"Rollback to the specified savepoint. PostgreSQL docs\",\"async def main() -> None: ... transaction = connection.transaction() await transaction.create_savepoint(\\\"my_savepoint\\\") await transaction.execute(...) await transaction.rollback_savepoint(\\\"my_savepoint\\\") \"]},\"165\":{\"h\":\"Release Savepoint\"},\"166\":{\"h\":\"Parameters:\",\"t\":[\"savepoint_name: name of the new savepoint.\",\"Release savepoint. PostgreSQL docs\",\"async def main() -> None: ... connection = await db_pool.connection() transaction = connection.transaction() await transaction.create_savepoint(\\\"my_savepoint\\\") await transaction.release_savepoint \"]},\"167\":{\"h\":\"Cursor\"},\"168\":{\"h\":\"Parameters\",\"t\":[\"querystring: Statement string.\",\"parameters: List of list of parameters for the statement string.\",\"fetch_number: rewrite default fetch_number. Default is 10.\",\"scroll: make cursor scrollable or not. Default is like in PostgreSQL.\",\"prepared: prepare querystring or not.\",\"From Transaction you can create new Cursor object which represents cursor in the PostgreSQL. PostgreSQL Docs\",\"async def main() -> None: ... transaction = await connection.transaction() cursor = transaction.cursor( querystring=\\\"SELECT * FROM users WHERE username = $1\\\", parameters=[\\\"Some_Username\\\"], fetch_number=5, ) await cursor.start() async for fetched_result in cursor: dict_result: List[Dict[Any, Any]] = fetched_result.result() ... # do something with the result. \"]},\"169\":{\"h\":\"Components Overview\"},\"170\":{\"h\":\"Components\",\"t\":[\"Connection pool: holds connections in itself and give them when requested.\",\"Connection: represents single database connection, can be retrieved from Connection pool.\",\"Transaction: represents database transaction, can be made from Connection.\",\"Cursor: represents database cursor, can be made from Transaction.\",\"Results: represents data returned from driver.\",\"Exceptions: we have some custom exceptions. (Section in development)\"]},\"171\":{\"h\":\"Connection pool\",\"t\":[\"Connection pool is the main object in the library. It initializes, creates, holds and gives connection to the user side.\\nConnection pool must be started up before any other operations.\"]},\"172\":{\"h\":\"What is PSQLPy?\",\"t\":[\"PSQLPy is a new Python driver for PostgreSQL fully written in Rust. It was inspired by Psycopg3 and AsyncPG.\",\"With PSQLPy you can:\",\"Make an interaction with the PostgeSQL in your application much faster (2-3 times).\",\"Be sure that there won't be any unexpected errors.\",\"Don't usually go to the documentation to search every question - we have awesome docstrings for every component.\",\"Use MyPy (or any other Python type checker) with confidence that exactly the types specified in the typing will be returned.\",\"Concentrate on writing your code, not understanding new abstractions in this library, we only have classes which represents PostgreSQL object (transaction, cursor, etc).\",\"Info\",\"It is extremely important to understand that the library will provide a noticeable acceleration in working with the database only if your queries are optimized. Otherwise, there will be acceleration, but not so significant\"]},\"173\":{\"h\":\"Important notes\",\"t\":[\"All statements will be prepared by default. You can read more about it here PostgreSQL Docs But in some situations this behavior can break you application. As an example, if you are using PGBouncer with Transaction Pooling ModeDocs or Statement Pooling ModeDocs you need to disable statement preparation. You can read how to do it in the next parts of the documentation.\"]},\"174\":{\"h\":\"Join community!\",\"t\":[\"You can get support from the creators of PSQLPy in some social media:\",\"Telegram\"]},\"175\":{\"h\":\"Let's Start\"},\"176\":{\"h\":\"Installation\",\"t\":[\"You can install psqlpy with pip, poetry or directly from git using pip:\",\"After installation you are ready to start querying!\"]},\"177\":{\"h\":\"First request to the database\",\"t\":[\"There is a minimal example of what you need to do to send your first query and receive result. Let's assume that we have table users:\",\"id\",\"name\",\"username\",\"1\",\"Aleksandr\",\"chandr-andr\",\"2\",\"Michail\",\"insani7y\",\"import asyncio from typing import Final from psqlpy import ConnectionPool, QueryResult async def main() -> None: # It uses default connection parameters db_pool: Final = ConnectionPool() results: Final[QueryResult] = await db_pool.execute( \\\"SELECT * FROM users WHERE id = $1\\\", [2], ) dict_results: Final[list[dict[Any, Any]]] = results.result() db.close() \",\"Tips\",\"You must call close() on database pool when you application is shutting down.\",\"Caution\",\"You must not use ConnectionPool.execute method in high-load production code!\\nIt pulls new connection from connection pull each call.\\nRecommended way to make queries is executing them with Connection, Transaction or Cursor.\"]},\"178\":{\"h\":\"Usage\",\"t\":[\"Feature details here.\"]},\"179\":{\"h\":\"AioHTTP\",\"t\":[\"There is the default example for AioHTTP framework.\",\"We strongly recommend to use the following example as a standard way to use PSQLPy with AioHTTP framework.\"]},\"180\":{\"h\":\"Complete example\",\"t\":[\"# Start example import asyncio from typing import cast from aiohttp import web from psqlpy import ConnectionPool async def start_db_pool(app: web.Application) -> None: \\\"\\\"\\\"Initialize database connection pool.\\\"\\\"\\\" db_pool = ConnectionPool( dsn=\\\"postgres://postgres:postgres@localhost:5432/postgres\\\", max_db_pool_size=10, ) app[\\\"db_pool\\\"] = db_pool async def stop_db_pool(app: web.Application) -> None: \\\"\\\"\\\"Close database connection pool.\\\"\\\"\\\" db_pool = cast(ConnectionPool, app.db_pool) db_pool.close() async def pg_pool_example(request: web.Request): db_pool = cast(ConnectionPool, request.app[\\\"db_pool\\\"]) connection = await db_pool.connection() await asyncio.sleep(10) query_result = await connection.execute( \\\"SELECT * FROM users\\\", ) dict_result = query_result.result() return web.json_response( data=dict_result, ) application = web.Application() application.on_startup.append(start_db_pool) application.add_routes([web.get('/', pg_pool_example)]) if __name__ == \\\"__main__\\\": web.run_app(application) \"]},\"181\":{\"h\":\"Blacksheep\",\"t\":[\"There is the default example for Blacksheep framework.\",\"We strongly recommend to use the following example as a standard way to use PSQLPy with Blacksheep framework.\"]},\"182\":{\"h\":\"Complete example\",\"t\":[\"# Start example from __future__ import annotations from typing import Any import uvicorn from blacksheep import Application, get from psqlpy import ConnectionPool app = Application() @app.on_start async def on_start(app: Application) -> None: \\\"\\\"\\\"Create a database pool and saves it in the application state.\\\"\\\"\\\" db_pool = ConnectionPool( dsn=\\\"postgres://postgres:postgres@localhost:5432/postgres\\\", max_db_pool_size=10, ) app.services.add_instance(db_pool) @app.on_stop async def on_stop(app: Application) -> None: \\\"\\\"\\\"Close a database pool if it exists in app scope.\\\"\\\"\\\" try: db_pool = app.services.resolve(ConnectionPool) except Exception: ... else: db_pool.close() @get(\\\"/\\\") async def pg_pool_example(db_pool: ConnectionPool) -> list[dict[Any, Any]]: connection = await db_pool.connection() query_result = await connection.execute( \\\"SELECT * FROM users\\\", ) return query_result.result() if __name__ == \\\"__main__\\\": uvicorn.run( \\\"start_example:app\\\", ) \"]},\"183\":{\"h\":\"FastAPI\",\"t\":[\"There is the default example for FastAPI framework.\"]},\"184\":{\"h\":\"Standard example.\",\"t\":[\"This code is perfect for situations when your endpoints don't have complex logic like sending messages over network with some queues (RabbitMQ, NATS, Kafka and etc) or making long calculations, so a connection won't idle to much. You need to take this restrictions into account if you don't have external database connection pool like PGBouncer.\",\"# Start example from contextlib import asynccontextmanager from typing import Annotated, AsyncGenerator, cast from fastapi import Depends, FastAPI, Request from fastapi.responses import JSONResponse from psqlpy import ConnectionPool, Connection import uvicorn @asynccontextmanager async def lifespan(app: FastAPI) -> AsyncGenerator[None, None]: \\\"\\\"\\\"Startup database connection pool and close it on shutdown.\\\"\\\"\\\" db_pool = ConnectionPool( dsn=\\\"postgres://postgres:postgres@localhost:5432/postgres\\\", max_db_pool_size=10, ) app.state.db_pool = db_pool yield db_pool.close() app = FastAPI(lifespan=lifespan) async def db_connection(request: Request) -> Connection: \\\"\\\"\\\"Retrieve new connection from connection pool and return it.\\\"\\\"\\\" return await (cast(ConnectionPool, request.app.state.db_pool)).connection() @app.get(\\\"/\\\") async def pg_pool_example( db_connection: Annotated[Connection, Depends(db_connection)], ): query_result = await db_connection.execute( \\\"SELECT * FROM users\\\", ) return JSONResponse(content=query_result.result()) if __name__ == \\\"__main__\\\": uvicorn.run( \\\"start_example:app\\\", ) \"]},\"185\":{\"h\":\"Advanced example\",\"t\":[\"If you don't have external connection pool like PGBouncer and your application have a lot of endpoints with a lot of complex logic, so it's better not to take a connection from a pool at the start of an endpoint execution (don't use Depends() like in the previous example), because it will be blocked until the end of the endpoint logic. The main idea is take a connection from a pool only for code parts in which it will be used immediately.\",\"# Start example from contextlib import asynccontextmanager from typing import Annotated, AsyncGenerator, cast from fastapi import Depends, FastAPI, Request from fastapi.responses import JSONResponse from psqlpy import ConnectionPool, Connection import uvicorn db_pool = ConnectionPool( dsn=\\\"postgres://postgres:postgres@localhost:5432/postgres\\\", max_db_pool_size=2, ) @asynccontextmanager async def lifespan(app: FastAPI) -> AsyncGenerator[None, None]: \\\"\\\"\\\"Startup database connection pool and close it on shutdown.\\\"\\\"\\\" app.state.db_pool = db_pool yield db_pool.close() app = FastAPI(lifespan=lifespan) async def some_long_func() -> None: # Some very long execution. ... @app.get(\\\"/\\\") async def pg_pool_example(): await some_long_func() db_connection = await db_pool.connection() query_result = await db_connection.execute( \\\"SELECT * FROM users\\\", ) return JSONResponse(content=query_result.result()) if __name__ == \\\"__main__\\\": uvicorn.run( \\\"start_example:app\\\", ) \"]},\"186\":{\"h\":\"Framework Usage\",\"t\":[\"Feature details here.\"]},\"187\":{\"h\":\"Litestar\",\"t\":[\"There is the default example for Litestar framework.\",\"We strongly recommend to use the following example as a standard way to use PSQLPy with Litestar framework.\"]},\"188\":{\"h\":\"Complete example\",\"t\":[\"# Start example from __future__ import annotations from typing import Any, cast import uvicorn from litestar import Litestar, Request, get from psqlpy import ConnectionPool def start_db_pool(app: Litestar) -> ConnectionPool: \\\"\\\"\\\"Return the db pool. If it doesn't exist, creates it and saves it in on the application state object \\\"\\\"\\\" if not getattr(app.state, \\\"db_pool\\\", None): app.state.db_pool = ConnectionPool( dsn=\\\"postgres://postgres:postgres@localhost:5432/postgres\\\", max_db_pool_size=10, ) return cast(\\\"ConnectionPool\\\", app.state.db_pool) async def stop_db_pool(app: Litestar) -> None: \\\"\\\"\\\"Close database connection pool.\\\"\\\"\\\" if getattr(app.state, \\\"db_pool\\\", None): db_pool = cast(ConnectionPool, app.state.db_pool) db_pool.close() @get(\\\"/\\\") async def pg_pool_example(request: Request) -> list[dict[Any, Any]]: db_pool = cast(ConnectionPool, request.app.state.db_pool) connection = await db_pool.connection() query_result = await connection.execute( \\\"SELECT * FROM users\\\", ) return query_result.result() app = Litestar( [pg_pool_example], on_startup=[start_db_pool], on_shutdown=[stop_db_pool], ) if __name__ == \\\"__main__\\\": uvicorn.run( \\\"start_example:app\\\", ) \"]},\"189\":{\"h\":\"Robyn\",\"t\":[\"There is the default example for Robyn framework.\",\"We strongly recommend to use the following example as a standard way to use PSQLPy with Robyn framework.\"]},\"190\":{\"h\":\"Complete example\",\"t\":[\"# Start example from __future__ import annotations import asyncio from typing import Any from psqlpy import ConnectionPool from robyn import Request, Robyn db_pool = ConnectionPool( dsn=\\\"postgres://postgres:postgres@localhost:5432/postgres\\\", max_db_pool_size=10, ) app = Robyn(__file__) @app.get(\\\"/\\\") async def pg_pool_example(request: Request) -> list[dict[Any, Any]]: connection = await db_pool.connection() query_result = await connection.execute( \\\"SELECT * FROM users\\\", ) return query_result.result() async def main() -> None: try: await app.start(host=\\\"127.0.0.1\\\", port=8000) finally: db_pool.close() if __name__ == \\\"__main__\\\": asyncio.run(main()) \"]},\"191\":{\"h\":\"Predefined row factories\",\"t\":[\"We have predefined row_factories for fast usage.\"]},\"192\":{\"h\":\"tuple_row\",\"t\":[\"Instead of dict you can return tuple as a result.\",\"from psqlpy.row_factories import tuple_row ... async def main() -> None: conn_result = await psql_pool.execute( querystring=f\\\"SELECT * FROM {table_name}\\\", ) tuple_res = conn_result.row_factory(row_factory=tuple_row) assert isinstance(tuple_res[0], tuple) \"]},\"193\":{\"h\":\"class_row\",\"t\":[\"You can build class from database result.\",\"from dataclasses import dataclass from psqlpy.row_factories import class_row ... @dataclass class ValidationTestModel: id: int name: str async def main() -> None: conn_result = await psql_pool.execute( querystring=f\\\"SELECT * FROM {table_name}\\\", ) tuple_res = conn_result.row_factory(row_factory=class_row(ValidationTestModel)) assert isinstance(tuple_res[0], ValidationTestModel) \"]},\"194\":{\"h\":\"Row Factories Usage\",\"t\":[\"row_factory must be used when you want to process result from Database in a custom way and return something different from dictionary.\",\"row_factory requires a function that accepts parameter Dict[str, typing.Any] and can return anything you want.\",\"Tips\",\"row_factory can be a function or a class with __call__ method which returns target converted instance.\"]},\"195\":{\"h\":\"Example:\",\"t\":[\"We create custom class and function with this class as a parameter and return function which will be used in processing row from database.\",\"@dataclass class ValidationTestModel: id: int name: str def to_class( class_: Type[ValidationTestModel], ) -> Callable[[Dict[str, Any]], ValidationTestModel]: def to_class_inner(row: Dict[str, Any]) -> ValidationTestModel: return class_(**row) return to_class_inner async def main() -> None: conn_result = await psql_pool.execute( querystring=f\\\"SELECT * FROM {table_name}\\\", ) class_res = conn_result.row_factory(row_factory=to_class(ValidationTestModel)) assert isinstance(class_res[0], ValidationTestModel) \"]},\"196\":{\"h\":\"Advanced Type Usage\",\"t\":[\"Due to an unavailability to support all possible types in PostgreSQL, we have a way to encode Python types into PostgreSQL ones and decode wise versa.\",\"This section has Advanced in the name because you'll need to work with raw bytes which can be difficult for some developers.\"]},\"197\":{\"h\":\"Pass unsupported type into PostgreSQL\",\"t\":[\"If you are using some type that we don't support and want to insert it into PostgreSQL from PSQLPy, you must use PyCustomType class.\",\"Let's assume we have table for_test in the database and PSQLPy doesn't support (only for demonstration) VARCHAR type:\",\"database type\",\"database column name\",\"VARCHAR\",\"nickname\",\"from typing import Final from psqlpy import ConnectionPool from psqlpy.extra_types import PyCustomType async def main() -> None: # It uses default connection parameters db_pool: Final = ConnectionPool() await db_pool.execute( \\\"INSERT INTO for_test (nickname) VALUES ($1)\\\", [PyCustomType(b\\\"SomeDataInBytes\\\")], ) db_pool.close() \",\"Here we pass PyCustomType into the parameters. It accepts only bytes.\",\"Important\",\"You must make bytes passed into PyCustomType readable for PostgreSQL. If bytes will be wrong, you will get an exception.\"]},\"198\":{\"h\":\"Decode unsupported type from PostgreSQL\",\"t\":[\"When you retrieve some data from the PostgreSQL there are can be data types that we don't support yet. To deal with this situation, you can use custom_decoders parameter in result() and as_class() methods.\",\"Let's assume we have table for_test in the database and PSQLPy doesn't support (only for demonstration) VARCHAR type:\",\"database type\",\"database column name\",\"VARCHAR\",\"nickname\",\"from typing import Final, Any from psqlpy import ConnectionPool, QueryResult from psqlpy.extra_types import PyCustomType def nickname_decoder(bytes_from_psql: bytes | None) -> str: return bytes_from_psql.decode() if bytes_from_psql else None async def main() -> None: # It uses default connection parameters db_pool: Final = ConnectionPool() result: QueryResult = await db_pool.execute( \\\"SELECT * FROM for_test\\\", [PyCustomType(b\\\"SomeDataInBytes\\\")], ) parsed_result: list[dict[str, Any]] = result.result( custom_decoders={ \\\"nickname\\\": nickname_decoder, }, ) db_pool.close() \",\"Important\",\"Rules about custom_decoders parameter:\",\"The key of the dict must be the name of the field on which you want to apply the decode function.\",\"If you use aliases for the result field name, you must specify the alias.\",\"The key of the dict must be in lowercase.\"]},\"199\":{\"h\":\"Array Types\",\"t\":[\"For type safety and better performance we have predefined array types.\",\"PSQLPy Array Type\",\"PostgreSQL Array Type\",\"BoolArray\",\"BOOLEAN ARRAY\",\"UUIDArray\",\"UUID ARRAY\",\"VarCharArray\",\"VarChar ARRAY\",\"TextArray\",\"Text ARRAY\",\"Int16Array\",\"INT2 ARRAY\",\"Int32Array\",\"INT4 ARRAY\",\"Int64Array\",\"INT8 ARRAY\",\"Float32Array\",\"FLOAT4 ARRAY\",\"Float64Array\",\"FLOAT8 ARRAY\",\"MoneyArray\",\"MONEY ARRAY\",\"IpAddressArray\",\"INET ARRAY\",\"JSONBArray\",\"JSONB ARRAY\",\"JSONArray\",\"JSON ARRAY\",\"DateArray\",\"DATE ARRAY\",\"TimeArray\",\"TIME ARRAY\",\"DateTimeArray\",\"TIMESTAMP ARRAY\",\"DateTimeTZArray\",\"TIMESTAMPTZ ARRAY\",\"MacAddr6Array\",\"MACADDR ARRAY\",\"MacAddr8Array\",\"MACADDR8 ARRAY\",\"NumericArray\",\"NUMERIC ARRAY\",\"PointArray\",\"POINT ARRAY\",\"BoxArray\",\"BOX ARRAY\",\"PathArray\",\"PATH ARRAY\",\"LineArray\",\"LINE ARRAY\",\"LsegArray\",\"LSEG ARRAY\",\"CircleArray\",\"CIRCLE ARRAY\",\"IntervalArray\",\"INTERVAL ARRAY\"]},\"200\":{\"h\":\"Example:\",\"t\":[\"from psqlpy import ConnectionPool from psqlpy.extra_types import TextArray async def main() -> None: pool = ConnectionPool() result = await pool.execute( querystring=\\\"SELECT * FROM users WHERE name = ANY($1)\\\", parameters=[ TextArray([\\\"Alex\\\", \\\"Dev\\\", \\\"Who\\\"]), ] ) \"]},\"201\":{\"h\":\"Extra Types\",\"t\":[\"PSQLPy has additional types due to the inability to accurately recognize the type passed from Python.\",\"All extra types available from Python with mapping to PostgreSQL type and Rust type.\",\"PSQLPy type\",\"PostgreSQL type\",\"Rust Type\",\"BigInt\",\"BigInt\",\"i64\",\"Integer\",\"Integer\",\"i32\",\"SmallInt\",\"SmallInt\",\"i16\",\"Float32\",\"FLOAT4\",\"f32\",\"Float64\",\"FLOAT8\",\"f64\",\"VarChar\",\"VarChar\",\"String\",\"Text\",\"Text\",\"String\",\"JSON\",\"JSON\",\"serde::Value\",\"JSONB\",\"JSONB\",\"serde::Value\",\"MacAddr6\",\"MacAddr\",\"MacAddr6\",\"MacAddr8\",\"MacAddr8\",\"MacAddr8\",\"Point\",\"Point\",\"Point\",\"Box\",\"Rect\",\"Box\",\"Path\",\"LineString\",\"Path\",\"Line\",\"LineSegment\",\"Line\",\"LineSegment\",\"LineSegment\",\"Lseg\",\"Circle\",\"Circle\",\"Circle\",\"PgVector\",\"Vector\",\"Vector\",\"Important\",\"To use Vector type in PostgreSQL you need to install it - pgvector.\"]},\"202\":{\"h\":\"BigInt & Integer & SmallInt & Float32 & Float64\",\"t\":[\"When integer is passed from Python to Rust, it's impossible to understand what type is required on the Database side. Because of this restriction if you are trying to insert or update number value, you need to specify type on Python side explicitly.\",\"Let's assume we have table numbers in the database:\",\"database type\",\"database column name\",\"SmallInt\",\"index\",\"Integer\",\"elf_life\",\"BigInt\",\"elon_musk_money\",\"FLOAT4\",\"rest_money\",\"FLOAT8\",\"company_money\",\"And we want to INSERT new data to this table:\",\"from typing import Final from psqlpy import ConnectionPool, QueryResult from psqlpy.extra_types import SmallInt, Integer, BigInt, Float32, Float64 async def main() -> None: # It uses default connection parameters db_pool: Final = ConnectionPool() await db_pool.execute( \\\"INSERT INTO numbers (index, elf_life, elon_musk_money) VALUES ($1, $2, $3, $4, $5)\\\", [SmallInt(101), Integer(10500), BigInt(300000000000), Float32(123.11), Float64(222.12)], ) db_pool.close() \",\"Important\",\"These types are limited only by the upper bound. These classes work not only as wrappers, but also as validators. For example, you can't pass integer bigger than 32,768 to SmallInt type.\"]},\"203\":{\"h\":\"PyVarChar & PyText\",\"t\":[\"When you need to pass string from Python to PSQLPy and this string must converted into Text PostgreSQL, you need to explicitly mark your string as PyText. If you don't work with PostgreSQL TEXT type, you can pass python str without any extra type.\",\"Let's assume we have table banners in the database:\",\"database type\",\"database column name\",\"VarChar\",\"title\",\"Text\",\"description\",\"from typing import Final from psqlpy import ConnectionPool, QueryResult from psqlpy.extra_types import PyText async def main() -> None: # It uses default connection parameters db_pool: Final = ConnectionPool() await db_pool.execute( \\\"INSERT INTO banners (title, description) VALUES ($1, $2)\\\", [\\\"SomeTitle\\\", PyText(\\\"Very long description\\\")], ) # Alternatively, you can do this: await db_pool.execute( \\\"INSERT INTO banners (title, description) VALUES ($1, $2)\\\", [PyVarChar(\\\"SomeTitle\\\"), PyText(\\\"Very long description\\\")], ) db_pool.close() \"]},\"204\":{\"h\":\"PyJSON & PyJSONB\",\"t\":[\"PyJSON/PyJSONB type exists only for situations when you want to set list of something to JSON/JSONB field. If you have default Python dict like above, you DON'T have to use PyJSON/PyJSONB type.\",\"my_dict = { \\\"just\\\": \\\"regular\\\", \\\"python\\\": \\\"dictionary\\\", \\\"of\\\": [ \\\"values\\\", ], \\\"with\\\": { \\\"nested\\\": \\\"values\\\", } } \",\"On the other side, if you want to set list of values to JSON/JSONB field, you must wrap it in PyJSON/PyJSONB type, otherwise PSQLPy will assume that you passed an array (PostgreSQL ARRAY).\",\"Let's assume we have table users in the database, and field additional_user_info can contain different type of data:\",\"database type\",\"database column name\",\"JSONB\",\"additional_user_info\",\"from typing import Final from psqlpy import ConnectionPool, QueryResult from psqlpy.extra_types import PyJSON async def main() -> None: # It uses default connection parameters db_pool: Final = ConnectionPool() list_for_jsonb_field = [ {\\\"some\\\": \\\"dict\\\"}, [ {\\\"nested\\\": \\\"list of dicts\\\"}, ], ] dict_for_jsonb_field = { \\\"regular\\\": \\\"dict\\\", \\\"with\\\": [ \\\"list\\\", \\\"of\\\", \\\"values\\\", 100, ] } await db_pool.execute( \\\"INSERT INTO users (additional_user_info) VALUES ($1)\\\", [PyJSONB(list_for_jsonb_field)], ) await db_pool.execute( \\\"INSERT INTO users (additional_user_info) VALUES ($1)\\\", [dict_for_jsonb_field,], ) db_pool.close() \"]},\"205\":{\"h\":\"PyMacAddr6 & PyMacAddr8\",\"t\":[\"Mac addresses must be used with PyMacAddr6 and PyMacAddr8 types.\",\"Let's assume we have table devices in the database:\",\"database type\",\"database column name\",\"MACADDR\",\"device_macaddr6\",\"MACADDR8\",\"device_macaddr8\",\"from typing import Final from psqlpy import ConnectionPool, QueryResult from psqlpy.extra_types import PyMacAddr6, PyMacAddr8 async def main() -> None: # It uses default connection parameters db_pool: Final = ConnectionPool() await db_pool.execute( \\\"INSERT INTO devices (device_macaddr6, device_macaddr8) VALUES ($1, $2)\\\", [ PyMacAddr6(\\\"08:00:2b:01:02:03\\\"), PyMacAddr8(\\\"08:00:2b:01:02:03:04:05\\\"), ], ) db_pool.close() \"]},\"206\":{\"h\":\"Geo Types\",\"t\":[\"Also in package exists support of PostgreSQL geo types(except Polygon for now). To use geo types you need specify them directly.\",\"Let's assume we have table geo_info with all PostgreSQL geo types in the database:\",\"database type\",\"database column name\",\"POINT\",\"map_point\",\"BOX\",\"point_district\",\"PATH\",\"path_to_point\",\"LINE\",\"points_line\",\"LSEG\",\"lseg_between_points\",\"CIRCLE\",\"point_radius_circle\",\"from typing import Final from psqlpy import ConnectionPool, QueryResult from psqlpy.extra_types import Point, Box, Path, Line, LineSegment, Circle async def main() -> None: # It uses default connection parameters db_pool: Final = ConnectionPool() await db_pool.execute( \\\"INSERT INTO geo_info VALUES ($1, $2, $3, $4, $5, $6)\\\", [ Point([1.5, 2]), Box([(1.7, 2.8), (9, 9)]), Path([(3.5, 3), (9, 9), (8, 8)]), Line([1, -2, 3]), LineSegment([(5.6, 3.1), (4, 5)]), Circle([5, 1.8, 10]), ], ) db_pool.close() \"]},\"207\":{\"h\":\"Supported Types\"},\"208\":{\"h\":\"Simple Type\",\"t\":[\"Here you can find all types supported by PSQLPy. If PSQLPy isn't -, you can go to the Extra Types for more information.\",\"Python type\",\"PSQLPy extra type\",\"PostgreSQL Type\",\"None\",\"-\",\"NULL\",\"bool\",\"-\",\"BOOL\",\"bytes\",\"-\",\"BYTEA\",\"str\",\"-\",\"VARCHAR\",\"str\",\"VarChar\",\"VARCHAR\",\"str\",\"Text\",\"TEXT\",\"str\",\"-\",\"XML\",\"int\",\"SmallInt\",\"SMALLINT\",\"int\",\"INTEGER\",\"INTEGER\",\"int\",\"-\",\"INTEGER\",\"int\",\"BIGINT\",\"BIGINT\",\"float\",\"-\",\"FLOAT8\",\"float\",\"Float32\",\"FLOAT4\",\"float\",\"Float64\",\"FLOAT8\",\"datetime.date\",\"-\",\"DATE\",\"datetime.time\",\"-\",\"TIME\",\"datetime.datetime\",\"-\",\"TIMESTAMP\",\"datetime.datetime\",\"-\",\"TIMESTAMPTZ\",\"datetime.timedelta\",\"-\",\"INTERVAL\",\"UUID\",\"-\",\"UUID\",\"dict\",\"-\",\"JSONB\",\"dict\",\"JSONB\",\"JSONB\",\"dict\",\"JSON\",\"JSON\",\"Mac Address 6\",\"MacAddr6\",\"MacAddr\",\"Mac Address 8\",\"MacAddr8\",\"MacAddr\",\"IPv4Address\",\"-\",\"INET\",\"IPv6Address\",\"-\",\"INET\",\"decimal.Decimal\",\"-\",\"NUMERIC\",\"int/str\",\"Money\",\"MONEY\",\"Point\",\"Point\",\"POINT\",\"Box\",\"Box\",\"BOX\",\"Path\",\"Path\",\"PATH\",\"Line\",\"Line\",\"LINE\",\"Line Segment\",\"LineSegment\",\"LSEG\",\"Circle\",\"Circle\",\"CIRCLE\",\"PgVector\",\"PgVector\",\"Vector\",\"Important\",\"DECIMAL PostgreSQL type isn't supported, use NUMERIC instead.\",\"Vector type in PostgreSQL can be used only after installation - pgvector.\"]},\"209\":{\"h\":\"Array Type\",\"t\":[\"You can make arrays with any type of Simple Types. For better performance and type safety we recommend to use predefined Array Types.\"]},\"210\":{\"h\":\"Example:\",\"t\":[\"CREATE TABLE test (arr_of_json JSONB ARRAY) \"]},\"211\":{\"h\":\"Composite Type\",\"t\":[\"PSQLPy supports composite types.\",\"You can create your own types in PostgreSQL, we will return you dict.\",\"CREATE TYPE custom_type AS (name VARCHAR, metadata JSONB); CREATE TABLE custom_table (user_info custom_type); \",\"Let's insert some data.\",\"INSERT INTO custom_table VALUES (ROW('Alex', '{\\\"age\\\": 50}')); \",\"Now we can see what result will be returned.\",\"from typing import Final from psqlpy import ConnectionPool, QueryResult from psqlpy.extra_types import SmallInt, Integer, BigInt async def main() -> None: # It uses default connection parameters db_pool: Final = ConnectionPool() result = await db_pool.execute( \\\"SELECT user_info FROM custom_table\\\", ) print(result.result()[0]) \",\"It will return:\",\"[ { \\\"user_info\\\": { \\\"name\\\": \\\"Alex\\\", \\\"metadata\\\": { \\\"age\\\": 50, }, }, } ] \"]},\"212\":{\"h\":\"Enum Type\",\"t\":[\"You can use ENUM type in PostgreSQL and Python.\",\"Let's assume we create EnumWeather and table with it.\",\"CREATE TYPE weather AS ENUM ('sun', 'not sun') CREATE table weather_plus (is_weather_good weather) \",\"Let's see how we can INSERT and SELECT such data.\",\"from enum import Enum from typing import Final from psqlpy import ConnectionPool, QueryResult class Weather(str, Enum): SUN = \\\"sun\\\" NOT_SUN = \\\"not sun\\\" async def main() -> None: # It uses default connection parameters db_pool: Final = ConnectionPool() # Insert new data await db_pool.execute( querystring=\\\"INSERT INTO weather_plus VALUES($1)\\\", parameters=[Weather.SUN], ) # Or you can pass string directly await db_pool.execute( querystring=\\\"INSERT INTO weather_plus VALUES($1)\\\", parameters=[\\\"sun\\\"], ) result = await db_pool.execute( querystring=\\\"SELECT * FROM weather_plus\\\", ) print(result.result()[0]) \",\"You will receive:\",\"[ { \\\"is_weather_good\\\": \\\"sun\\\", }, ] \"]},\"213\":{\"h\":\"Types Description\",\"t\":[\"Feature details here.\"]},\"214\":{\"h\":\"\",\"t\":[\"404 Not Found\"]},\"215\":{\"h\":\"Components\"},\"216\":{\"h\":\"Introduction\"},\"217\":{\"h\":\"Usage\"},\"218\":{\"h\":\"Frameworks\"},\"219\":{\"h\":\"Row Factories\"},\"220\":{\"h\":\"Types\"}},\"dirtCount\":0,\"index\":[[\"xml\",{\"1\":{\"208\":1}}],[\"6\",{\"1\":{\"206\":1,\"208\":1}}],[\"9\",{\"1\":{\"206\":4}}],[\"8\",{\"1\":{\"206\":4,\"208\":1}}],[\"7\",{\"1\":{\"206\":1}}],[\"768\",{\"1\":{\"202\":1}}],[\"yet\",{\"1\":{\"198\":1}}],[\"yield\",{\"1\":{\"184\":1,\"185\":1}}],[\"your\",{\"0\":{\"141\":1},\"1\":{\"5\":1,\"8\":2,\"9\":2,\"11\":1,\"57\":1,\"172\":3,\"177\":1,\"184\":1,\"185\":1,\"203\":1,\"211\":1}}],[\"you\",{\"1\":{\"3\":1,\"4\":3,\"5\":3,\"8\":3,\"9\":7,\"10\":2,\"11\":6,\"12\":1,\"13\":1,\"15\":1,\"17\":3,\"23\":1,\"27\":1,\"33\":1,\"35\":1,\"37\":1,\"40\":1,\"41\":2,\"52\":3,\"58\":2,\"87\":1,\"92\":1,\"93\":1,\"95\":1,\"97\":1,\"101\":2,\"102\":1,\"141\":8,\"142\":2,\"144\":1,\"145\":1,\"147\":1,\"153\":2,\"155\":1,\"157\":1,\"168\":1,\"172\":1,\"173\":5,\"174\":1,\"176\":2,\"177\":4,\"184\":2,\"185\":1,\"192\":1,\"193\":1,\"194\":2,\"196\":1,\"197\":4,\"198\":5,\"201\":1,\"202\":3,\"203\":5,\"204\":6,\"206\":1,\"208\":2,\"209\":1,\"211\":2,\"212\":3}}],[\"kafka\",{\"1\":{\"184\":1}}],[\"keepalive\",{\"1\":{\"42\":4,\"77\":1,\"78\":1,\"79\":3,\"80\":1}}],[\"keepalives\",{\"0\":{\"77\":1,\"78\":1,\"79\":1,\"80\":1},\"1\":{\"42\":8,\"78\":1,\"79\":1,\"80\":1}}],[\"key\",{\"0\":{\"5\":1},\"1\":{\"198\":2}}],[\"|\",{\"1\":{\"159\":57,\"198\":1}}],[\"4\",{\"1\":{\"50\":1,\"206\":1}}],[\"404\",{\"1\":{\"214\":1}}],[\"40\",{\"1\":{\"4\":1}}],[\"05\",{\"1\":{\"205\":1}}],[\"04\",{\"1\":{\"205\":1}}],[\"03\",{\"1\":{\"205\":2}}],[\"02\",{\"1\":{\"205\":2}}],[\"01\",{\"1\":{\"205\":2}}],[\"00\",{\"1\":{\"205\":2}}],[\"08\",{\"1\":{\"205\":2}}],[\"0\",{\"1\":{\"41\":1,\"42\":1,\"58\":2,\"74\":1,\"190\":2,\"192\":1,\"193\":1,\"195\":1,\"211\":1,\"212\":1}}],[\"validators\",{\"1\":{\"202\":1}}],[\"validationtestmodel\",{\"1\":{\"193\":3,\"195\":6}}],[\"value\",{\"1\":{\"37\":3,\"67\":1,\"79\":1,\"104\":1,\"157\":3,\"201\":2,\"202\":1}}],[\"values\",{\"1\":{\"17\":1,\"20\":2,\"33\":1,\"141\":1,\"142\":1,\"153\":1,\"159\":1,\"197\":1,\"202\":1,\"203\":2,\"204\":6,\"205\":1,\"206\":1,\"211\":1,\"212\":2}}],[\"val\",{\"0\":{\"36\":1,\"156\":1}}],[\"var\",{\"1\":{\"42\":1}}],[\"variant=readvariant\",{\"1\":{\"39\":1}}],[\"variant\",{\"1\":{\"39\":2,\"140\":2}}],[\"varchararray\",{\"1\":{\"20\":2,\"199\":1}}],[\"varchar\",{\"1\":{\"20\":1,\"29\":2,\"149\":2,\"197\":2,\"198\":2,\"199\":1,\"201\":2,\"203\":1,\"208\":3,\"211\":1}}],[\"varying\",{\"1\":{\"17\":1}}],[\"vector\",{\"1\":{\"201\":3,\"208\":2}}],[\"versa\",{\"1\":{\"196\":1}}],[\"very\",{\"1\":{\"4\":1,\"185\":1,\"203\":2}}],[\"venv\",{\"1\":{\"9\":3}}],[\"ve\",{\"1\":{\"4\":1,\"141\":1}}],[\"2b\",{\"1\":{\"205\":2}}],[\"222\",{\"1\":{\"202\":1}}],[\"2fpostgresql\",{\"1\":{\"42\":1}}],[\"2flib\",{\"1\":{\"42\":1}}],[\"2fvar\",{\"1\":{\"42\":1}}],[\"20\",{\"1\":{\"33\":1,\"153\":1}}],[\"25\",{\"1\":{\"17\":1}}],[\"2\",{\"1\":{\"16\":2,\"42\":1,\"78\":1,\"159\":6,\"172\":1,\"177\":2,\"206\":3}}],[\"11\",{\"1\":{\"202\":1}}],[\"12\",{\"1\":{\"202\":1}}],[\"123\",{\"1\":{\"202\":1}}],[\"1234\",{\"1\":{\"42\":1}}],[\"127\",{\"1\":{\"190\":1}}],[\"192\",{\"1\":{\"58\":1}}],[\"15\",{\"1\":{\"49\":1}}],[\"1\",{\"1\":{\"16\":2,\"27\":1,\"33\":1,\"52\":1,\"58\":1,\"147\":1,\"159\":8,\"177\":1,\"190\":1,\"206\":5}}],[\"10500\",{\"1\":{\"202\":1}}],[\"101\",{\"1\":{\"202\":1}}],[\"1043\",{\"1\":{\"17\":1}}],[\"100\",{\"1\":{\"4\":1,\"14\":2,\"27\":1,\"31\":1,\"35\":1,\"37\":1,\"41\":1,\"52\":1,\"54\":1,\"134\":1,\"136\":1,\"141\":1,\"142\":1,\"147\":1,\"151\":1,\"155\":1,\"157\":1,\"159\":1,\"204\":1}}],[\"10\",{\"1\":{\"4\":1,\"5\":1,\"14\":2,\"33\":1,\"58\":1,\"82\":1,\"153\":1,\"168\":1,\"180\":1,\"206\":1}}],[\"<field>\",{\"1\":{\"15\":2}}],[\"$6\",{\"1\":{\"206\":1}}],[\"$5\",{\"1\":{\"202\":1,\"206\":1}}],[\"$4\",{\"1\":{\"202\":1,\"206\":1}}],[\"$3\",{\"1\":{\"202\":1,\"206\":1}}],[\"$<number>\",{\"1\":{\"27\":1,\"33\":1,\"52\":1,\"147\":1}}],[\"$2\",{\"1\":{\"14\":2,\"27\":1,\"31\":1,\"33\":1,\"52\":1,\"54\":1,\"141\":1,\"142\":1,\"147\":1,\"151\":1,\"153\":1,\"159\":1,\"202\":1,\"203\":2,\"205\":1,\"206\":1}}],[\"$1\",{\"1\":{\"14\":2,\"16\":2,\"18\":2,\"20\":2,\"27\":1,\"31\":1,\"33\":1,\"35\":1,\"37\":1,\"52\":1,\"54\":1,\"83\":1,\"134\":1,\"136\":1,\"141\":1,\"142\":1,\"147\":1,\"151\":1,\"153\":1,\"155\":1,\"157\":1,\"159\":3,\"168\":1,\"177\":1,\"197\":1,\"200\":1,\"202\":1,\"203\":2,\"204\":2,\"205\":1,\"206\":1,\"212\":2}}],[\"==\",{\"1\":{\"180\":1,\"182\":1,\"184\":1,\"185\":1,\"188\":1,\"190\":1}}],[\"=\",{\"1\":{\"14\":2,\"15\":1,\"16\":3,\"18\":4,\"20\":2,\"27\":5,\"29\":1,\"31\":5,\"33\":1,\"35\":4,\"37\":2,\"39\":2,\"40\":1,\"43\":1,\"44\":1,\"45\":1,\"52\":4,\"54\":4,\"56\":1,\"58\":1,\"83\":5,\"87\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":1,\"95\":1,\"96\":1,\"127\":4,\"129\":5,\"134\":5,\"136\":6,\"141\":5,\"142\":2,\"147\":5,\"149\":1,\"151\":5,\"153\":1,\"155\":4,\"157\":2,\"159\":7,\"164\":1,\"166\":2,\"168\":4,\"177\":4,\"180\":8,\"182\":5,\"184\":4,\"185\":5,\"188\":6,\"190\":4,\"192\":2,\"193\":2,\"195\":2,\"197\":1,\"198\":3,\"200\":3,\"202\":1,\"203\":1,\"204\":4,\"205\":1,\"206\":1,\"211\":2,\"212\":4}}],[\">\",{\"1\":{\"9\":3,\"14\":2,\"16\":2,\"18\":2,\"20\":2,\"27\":1,\"29\":1,\"31\":1,\"33\":1,\"35\":1,\"37\":2,\"39\":1,\"40\":1,\"46\":1,\"49\":1,\"52\":1,\"54\":1,\"55\":1,\"56\":1,\"57\":1,\"83\":1,\"85\":1,\"86\":1,\"87\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":1,\"95\":1,\"96\":1,\"127\":1,\"129\":2,\"134\":1,\"136\":2,\"141\":4,\"142\":1,\"144\":1,\"145\":1,\"147\":1,\"149\":1,\"151\":1,\"153\":1,\"155\":1,\"157\":2,\"159\":1,\"161\":1,\"162\":1,\"164\":1,\"166\":1,\"168\":1,\"177\":1,\"180\":2,\"182\":3,\"184\":2,\"185\":2,\"188\":3,\"190\":2,\"192\":1,\"193\":1,\"195\":3,\"197\":1,\"198\":2,\"200\":1,\"202\":1,\"203\":1,\"204\":1,\"205\":1,\"206\":1,\"211\":1,\"212\":1}}],[\"jsonarray\",{\"1\":{\"199\":1}}],[\"jsonb\",{\"1\":{\"199\":1,\"201\":2,\"204\":7,\"208\":3,\"210\":1,\"211\":1}}],[\"jsonbarray\",{\"1\":{\"199\":1}}],[\"jsonresponse\",{\"1\":{\"184\":2,\"185\":2}}],[\"json\",{\"1\":{\"180\":1,\"199\":1,\"201\":2,\"204\":2,\"208\":2,\"210\":1}}],[\"just\",{\"1\":{\"8\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"95\":1,\"204\":1}}],[\"join\",{\"0\":{\"3\":1,\"174\":1}}],[\"queues\",{\"1\":{\"184\":1}}],[\"queries=\",{\"1\":{\"159\":1}}],[\"queries\",{\"1\":{\"102\":1,\"159\":5,\"172\":1,\"177\":1}}],[\"querying\",{\"1\":{\"176\":1}}],[\"querystrings\",{\"1\":{\"29\":1,\"149\":1,\"159\":2}}],[\"querystring\",{\"1\":{\"27\":2,\"29\":1,\"31\":1,\"33\":2,\"35\":2,\"37\":2,\"52\":2,\"54\":1,\"82\":2,\"147\":1,\"149\":1,\"151\":1,\"153\":2,\"155\":2,\"157\":2,\"159\":1,\"168\":2}}],[\"querystring=f\",{\"1\":{\"192\":1,\"193\":1,\"195\":1}}],[\"querystring=\",{\"1\":{\"14\":2,\"16\":2,\"18\":2,\"20\":2,\"83\":1,\"147\":1,\"151\":1,\"168\":1,\"200\":1,\"212\":3}}],[\"queryresult\",{\"0\":{\"125\":1},\"1\":{\"22\":1,\"27\":1,\"31\":1,\"37\":1,\"52\":1,\"54\":1,\"83\":1,\"87\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":1,\"95\":1,\"96\":1,\"124\":1,\"127\":1,\"129\":1,\"147\":1,\"151\":1,\"157\":1,\"159\":2,\"177\":2,\"198\":2,\"202\":1,\"203\":1,\"204\":1,\"205\":1,\"206\":1,\"211\":1,\"212\":1}}],[\"query\",{\"1\":{\"4\":1,\"27\":1,\"29\":1,\"35\":2,\"37\":1,\"52\":2,\"82\":1,\"102\":1,\"127\":2,\"129\":2,\"134\":2,\"136\":2,\"141\":1,\"142\":1,\"147\":1,\"149\":1,\"155\":2,\"157\":1,\"159\":14,\"177\":1,\"180\":2,\"182\":2,\"184\":1,\"185\":1,\"188\":2,\"190\":2}}],[\"questions\",{\"0\":{\"12\":1},\"1\":{\"12\":1}}],[\"question\",{\"1\":{\"8\":1,\"172\":1}}],[\"elon\",{\"1\":{\"202\":2}}],[\"elf\",{\"1\":{\"202\":2}}],[\"else\",{\"1\":{\"182\":1,\"198\":1}}],[\"element\",{\"1\":{\"17\":1}}],[\"etc\",{\"1\":{\"172\":1,\"184\":1}}],[\"easily\",{\"1\":{\"129\":1,\"136\":1}}],[\"each\",{\"1\":{\"27\":1,\"33\":1,\"42\":2,\"52\":2,\"70\":1,\"71\":1,\"73\":2,\"83\":1,\"147\":1,\"159\":1,\"177\":1}}],[\"effect\",{\"1\":{\"42\":1,\"74\":1}}],[\"everything\",{\"1\":{\"141\":1}}],[\"every\",{\"1\":{\"41\":1,\"58\":1,\"172\":2}}],[\"even\",{\"1\":{\"10\":1}}],[\"empty\",{\"0\":{\"19\":1},\"1\":{\"19\":1,\"20\":1}}],[\"errors\",{\"1\":{\"100\":1,\"105\":1,\"106\":1,\"109\":1,\"112\":1,\"119\":1,\"172\":1}}],[\"error\",{\"1\":{\"17\":1,\"29\":1,\"101\":1,\"102\":2,\"103\":1,\"104\":1,\"105\":1,\"106\":1,\"107\":1,\"108\":1,\"109\":1,\"110\":1,\"111\":1,\"112\":1,\"113\":1,\"114\":1,\"115\":1,\"116\":1,\"117\":1,\"118\":1,\"119\":1,\"120\":1,\"121\":1,\"122\":1,\"123\":1,\"142\":1,\"149\":1}}],[\"exist\",{\"1\":{\"188\":1}}],[\"exists\",{\"1\":{\"182\":1,\"204\":1,\"206\":1}}],[\"except\",{\"1\":{\"182\":1,\"206\":1}}],[\"exceptions\",{\"0\":{\"97\":1,\"98\":1,\"99\":1},\"1\":{\"22\":2,\"97\":2,\"170\":2}}],[\"exception\",{\"1\":{\"17\":1,\"35\":1,\"37\":1,\"100\":1,\"102\":1,\"155\":1,\"157\":1,\"182\":1,\"197\":1}}],[\"excess\",{\"1\":{\"48\":1}}],[\"exactly\",{\"1\":{\"35\":1,\"37\":1,\"124\":1,\"155\":1,\"157\":1,\"172\":1}}],[\"exampleofasclass\",{\"1\":{\"129\":2,\"136\":2}}],[\"example\",{\"0\":{\"180\":1,\"182\":1,\"184\":1,\"185\":1,\"188\":1,\"190\":1,\"195\":1,\"200\":1,\"210\":1},\"1\":{\"17\":3,\"29\":1,\"42\":1,\"142\":1,\"149\":1,\"159\":1,\"173\":1,\"177\":1,\"179\":2,\"180\":3,\"181\":2,\"182\":3,\"183\":1,\"184\":3,\"185\":4,\"187\":2,\"188\":4,\"189\":2,\"190\":2,\"202\":1}}],[\"executing\",{\"1\":{\"102\":1,\"177\":1}}],[\"execution\",{\"1\":{\"27\":1,\"29\":1,\"31\":1,\"33\":1,\"35\":1,\"37\":1,\"52\":1,\"54\":1,\"108\":1,\"110\":1,\"117\":1,\"147\":1,\"149\":1,\"151\":1,\"153\":1,\"155\":1,\"157\":1,\"159\":1,\"185\":2}}],[\"executed\",{\"1\":{\"142\":1,\"159\":1}}],[\"executes\",{\"1\":{\"29\":1,\"149\":1}}],[\"execute\",{\"0\":{\"26\":1,\"28\":1,\"32\":1,\"51\":1,\"146\":1,\"148\":1,\"152\":1},\"1\":{\"14\":2,\"16\":2,\"18\":2,\"20\":2,\"27\":2,\"29\":1,\"31\":1,\"33\":1,\"46\":1,\"52\":5,\"54\":1,\"127\":1,\"129\":1,\"141\":1,\"142\":1,\"147\":2,\"149\":1,\"151\":1,\"153\":3,\"159\":1,\"161\":1,\"162\":1,\"164\":1,\"177\":2,\"180\":1,\"182\":1,\"184\":1,\"185\":1,\"188\":1,\"190\":1,\"192\":1,\"193\":1,\"195\":1,\"197\":1,\"198\":1,\"200\":1,\"202\":1,\"203\":2,\"204\":2,\"205\":1,\"206\":1,\"211\":1,\"212\":3}}],[\"explicit\",{\"1\":{\"19\":1}}],[\"explicitly\",{\"1\":{\"17\":1,\"202\":1,\"203\":1}}],[\"expected\",{\"1\":{\"17\":1}}],[\"expects\",{\"1\":{\"13\":1}}],[\"extremely\",{\"1\":{\"172\":1}}],[\"extra\",{\"0\":{\"201\":1},\"1\":{\"14\":1,\"18\":1,\"20\":1,\"197\":1,\"198\":1,\"200\":1,\"201\":1,\"202\":1,\"203\":2,\"204\":1,\"205\":1,\"206\":1,\"208\":2,\"211\":1}}],[\"external\",{\"0\":{\"7\":1},\"1\":{\"4\":5,\"184\":1,\"185\":1}}],[\"enumweather\",{\"1\":{\"212\":1}}],[\"enum\",{\"0\":{\"212\":1},\"1\":{\"212\":5}}],[\"encode\",{\"1\":{\"196\":1}}],[\"end\",{\"1\":{\"185\":1}}],[\"endpoint\",{\"1\":{\"185\":2}}],[\"endpoints\",{\"1\":{\"184\":1,\"185\":1}}],[\"enough\",{\"1\":{\"41\":1}}],[\"enabled\",{\"1\":{\"11\":1}}],[\"env\",{\"1\":{\"11\":7}}],[\"environment\",{\"0\":{\"9\":1},\"1\":{\"9\":2}}],[\"either\",{\"1\":{\"8\":1,\"70\":1,\"71\":1,\"72\":1,\"129\":1,\"136\":1}}],[\"32\",{\"1\":{\"202\":1}}],[\"300000000000\",{\"1\":{\"202\":1}}],[\"3\",{\"1\":{\"5\":1,\"16\":2,\"159\":6,\"172\":1,\"206\":4}}],[\"uvicorn\",{\"1\":{\"182\":2,\"184\":2,\"185\":2,\"188\":2}}],[\"uuidarray\",{\"1\":{\"199\":1}}],[\"uuid\",{\"1\":{\"103\":2,\"199\":1,\"208\":2}}],[\"uuidvalueconverterror\",{\"0\":{\"103\":1}}],[\"unavailability\",{\"1\":{\"196\":1}}],[\"unacknowledged\",{\"1\":{\"42\":1}}],[\"until\",{\"1\":{\"185\":1}}],[\"understand\",{\"1\":{\"172\":1,\"202\":1}}],[\"understanding\",{\"1\":{\"172\":1}}],[\"underlying\",{\"1\":{\"111\":1,\"118\":1,\"123\":1}}],[\"unexpected\",{\"1\":{\"172\":1}}],[\"unsupported\",{\"0\":{\"197\":1,\"198\":1},\"1\":{\"127\":1,\"129\":1,\"131\":1,\"134\":1,\"136\":1,\"138\":1}}],[\"unsuccessful\",{\"1\":{\"33\":1}}],[\"unix\",{\"1\":{\"42\":5,\"70\":2,\"74\":1,\"77\":1,\"78\":1,\"79\":1,\"80\":1}}],[\"u\",{\"1\":{\"9\":1}}],[\"upper\",{\"1\":{\"202\":1}}],[\"update\",{\"1\":{\"202\":1}}],[\"up\",{\"0\":{\"9\":1},\"1\":{\"5\":1,\"41\":1,\"159\":1,\"171\":1}}],[\"usage\",{\"0\":{\"24\":1,\"178\":1,\"186\":1,\"194\":1,\"196\":1,\"217\":1},\"1\":{\"191\":1}}],[\"using\",{\"1\":{\"10\":1,\"15\":1,\"29\":1,\"83\":1,\"149\":1,\"173\":1,\"176\":1,\"197\":1}}],[\"usually\",{\"1\":{\"4\":1,\"172\":1}}],[\"uses\",{\"1\":{\"177\":1,\"197\":1,\"198\":1,\"202\":1,\"203\":1,\"204\":1,\"205\":1,\"206\":1,\"211\":1,\"212\":1}}],[\"useful\",{\"1\":{\"40\":1}}],[\"used\",{\"1\":{\"33\":1,\"38\":1,\"42\":4,\"55\":1,\"66\":1,\"72\":2,\"75\":1,\"82\":1,\"87\":1,\"185\":1,\"194\":1,\"195\":1,\"205\":1,\"208\":1}}],[\"user=user\",{\"1\":{\"42\":1}}],[\"username=\",{\"1\":{\"43\":1}}],[\"username\",{\"1\":{\"27\":1,\"31\":1,\"35\":1,\"42\":3,\"52\":1,\"54\":1,\"63\":1,\"83\":2,\"127\":1,\"129\":4,\"134\":1,\"136\":4,\"141\":1,\"142\":1,\"147\":1,\"151\":1,\"155\":1,\"159\":2,\"168\":2,\"177\":1}}],[\"user\",{\"0\":{\"63\":1,\"74\":1},\"1\":{\"11\":2,\"41\":1,\"42\":10,\"58\":1,\"74\":2,\"171\":1,\"204\":4,\"211\":3}}],[\"users\",{\"1\":{\"3\":1,\"14\":2,\"16\":2,\"18\":2,\"27\":1,\"31\":1,\"33\":1,\"35\":1,\"37\":1,\"52\":1,\"54\":1,\"83\":1,\"127\":1,\"129\":1,\"134\":1,\"136\":1,\"141\":1,\"142\":1,\"147\":1,\"151\":1,\"153\":1,\"155\":1,\"157\":1,\"159\":3,\"168\":1,\"177\":2,\"180\":1,\"182\":1,\"184\":1,\"185\":1,\"188\":1,\"190\":1,\"200\":1,\"204\":3}}],[\"use\",{\"0\":{\"46\":1},\"1\":{\"4\":2,\"15\":1,\"17\":2,\"19\":1,\"29\":1,\"40\":1,\"42\":1,\"43\":1,\"44\":1,\"52\":1,\"77\":1,\"97\":1,\"142\":2,\"149\":1,\"159\":1,\"172\":1,\"177\":1,\"179\":2,\"181\":2,\"185\":1,\"187\":2,\"189\":2,\"197\":1,\"198\":2,\"201\":1,\"204\":1,\"206\":1,\"208\":1,\"209\":1,\"212\":1}}],[\"useless\",{\"1\":{\"1\":1}}],[\"50\",{\"1\":{\"211\":2}}],[\"5678\",{\"1\":{\"42\":1}}],[\"5432\",{\"1\":{\"11\":1,\"42\":1,\"44\":1,\"45\":1,\"46\":1,\"58\":1,\"72\":1,\"141\":1,\"142\":1,\"180\":1,\"182\":1,\"184\":1,\"185\":1,\"188\":1,\"190\":1}}],[\"5\",{\"1\":{\"4\":1,\"83\":1,\"206\":5}}],[\"right\",{\"1\":{\"141\":1}}],[\"robyn\",{\"0\":{\"189\":1},\"1\":{\"189\":2,\"190\":3}}],[\"robust\",{\"1\":{\"58\":1}}],[\"routes\",{\"1\":{\"180\":1}}],[\"rollback\",{\"0\":{\"162\":1,\"163\":1},\"1\":{\"115\":1,\"142\":1,\"161\":1,\"162\":2,\"164\":2}}],[\"rows\",{\"1\":{\"124\":1,\"159\":6}}],[\"row\",{\"0\":{\"34\":1,\"130\":1,\"137\":1,\"154\":1,\"191\":1,\"192\":1,\"193\":1,\"194\":1,\"219\":1},\"1\":{\"35\":2,\"37\":1,\"124\":1,\"131\":1,\"134\":1,\"136\":1,\"138\":1,\"141\":1,\"155\":2,\"157\":1,\"191\":1,\"192\":5,\"193\":5,\"194\":3,\"195\":5,\"211\":1}}],[\"radius\",{\"1\":{\"206\":1}}],[\"raw\",{\"1\":{\"196\":1}}],[\"rabbitmq\",{\"1\":{\"184\":1}}],[\"raises\",{\"1\":{\"142\":1}}],[\"raised\",{\"1\":{\"35\":1,\"37\":1,\"155\":1,\"157\":1}}],[\"rather\",{\"1\":{\"75\":1}}],[\"random\",{\"1\":{\"42\":3}}],[\"regular\",{\"1\":{\"204\":2}}],[\"rewrite\",{\"1\":{\"168\":1}}],[\"rewritten\",{\"1\":{\"142\":1}}],[\"release\",{\"0\":{\"165\":1},\"1\":{\"166\":2}}],[\"relative\",{\"0\":{\"93\":1},\"1\":{\"93\":3}}],[\"rect\",{\"1\":{\"201\":1}}],[\"receive\",{\"1\":{\"159\":6,\"177\":1,\"212\":1}}],[\"recycled\",{\"1\":{\"42\":1,\"62\":1}}],[\"recycling\",{\"0\":{\"62\":1},\"1\":{\"42\":1,\"62\":2}}],[\"recognize\",{\"1\":{\"201\":1}}],[\"records\",{\"1\":{\"87\":1,\"92\":1,\"93\":1,\"94\":1,\"95\":1,\"96\":1}}],[\"record\",{\"1\":{\"42\":1,\"87\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1}}],[\"recommended\",{\"1\":{\"177\":1}}],[\"recommend\",{\"1\":{\"4\":1,\"10\":1,\"179\":1,\"181\":1,\"187\":1,\"189\":1,\"209\":1}}],[\"remain\",{\"1\":{\"42\":1}}],[\"rest\",{\"1\":{\"202\":1}}],[\"restriction\",{\"1\":{\"202\":1}}],[\"restrictions\",{\"1\":{\"184\":1}}],[\"res\",{\"1\":{\"192\":2,\"193\":2,\"195\":2}}],[\"responses\",{\"1\":{\"184\":1,\"185\":1}}],[\"response\",{\"1\":{\"180\":1}}],[\"resize\",{\"0\":{\"48\":1},\"1\":{\"48\":1,\"49\":1}}],[\"resolved\",{\"1\":{\"42\":1}}],[\"resolve\",{\"1\":{\"42\":1,\"73\":1,\"182\":1}}],[\"result\",{\"0\":{\"126\":1,\"133\":1},\"1\":{\"22\":1,\"27\":1,\"31\":1,\"33\":1,\"35\":6,\"37\":2,\"52\":1,\"54\":1,\"83\":5,\"87\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":1,\"95\":1,\"96\":1,\"124\":2,\"127\":5,\"129\":3,\"134\":5,\"136\":3,\"147\":1,\"151\":1,\"155\":6,\"157\":2,\"168\":5,\"177\":2,\"180\":5,\"182\":3,\"184\":3,\"185\":3,\"188\":3,\"190\":3,\"192\":3,\"193\":3,\"194\":1,\"195\":2,\"198\":6,\"200\":1,\"211\":4,\"212\":3}}],[\"results\",{\"0\":{\"124\":1},\"1\":{\"22\":1,\"27\":3,\"31\":3,\"52\":3,\"54\":3,\"83\":1,\"124\":2,\"129\":1,\"136\":1,\"147\":3,\"151\":3,\"159\":1,\"170\":1,\"177\":3}}],[\"retries\",{\"0\":{\"80\":1},\"1\":{\"42\":1}}],[\"retrieve\",{\"1\":{\"37\":1,\"50\":2,\"157\":1,\"184\":1,\"198\":1}}],[\"retrieved\",{\"1\":{\"22\":1,\"170\":1}}],[\"returned\",{\"1\":{\"170\":1,\"172\":1,\"211\":1}}],[\"return\",{\"1\":{\"35\":1,\"37\":1,\"155\":1,\"157\":1,\"180\":1,\"182\":1,\"184\":3,\"185\":1,\"188\":3,\"190\":1,\"192\":1,\"194\":2,\"195\":3,\"198\":1,\"211\":2}}],[\"returns\",{\"1\":{\"33\":1,\"40\":1,\"42\":1,\"124\":1,\"194\":1}}],[\"represents\",{\"1\":{\"22\":5,\"23\":1,\"81\":1,\"139\":1,\"168\":1,\"170\":4,\"172\":1}}],[\"requires\",{\"1\":{\"194\":1}}],[\"requirements\",{\"1\":{\"42\":1,\"75\":1}}],[\"required\",{\"1\":{\"11\":1,\"202\":1}}],[\"requested\",{\"1\":{\"22\":1,\"170\":1}}],[\"request\",{\"0\":{\"177\":1},\"1\":{\"8\":1,\"159\":1,\"180\":3,\"184\":4,\"185\":1,\"188\":4,\"190\":3}}],[\"requests\",{\"1\":{\"4\":3,\"50\":1}}],[\"readable\",{\"1\":{\"197\":1}}],[\"ready\",{\"1\":{\"141\":1,\"176\":1}}],[\"readwrite\",{\"1\":{\"39\":1}}],[\"readvariant\",{\"1\":{\"39\":1}}],[\"read\",{\"1\":{\"39\":3,\"75\":1,\"127\":1,\"129\":1,\"131\":2,\"134\":1,\"136\":1,\"138\":2,\"140\":2,\"159\":1,\"173\":2}}],[\"reason\",{\"1\":{\"4\":1}}],[\"real\",{\"1\":{\"4\":2,\"81\":1}}],[\"runtime\",{\"1\":{\"67\":1}}],[\"run\",{\"1\":{\"10\":2,\"11\":4,\"180\":1,\"182\":1,\"184\":1,\"185\":1,\"188\":1,\"190\":1}}],[\"runs\",{\"1\":{\"4\":1,\"8\":1}}],[\"rules\",{\"1\":{\"8\":1,\"198\":1}}],[\"rusttopyvaluemappingerror\",{\"0\":{\"101\":1}}],[\"rustpsqldriverpybaseerror\",{\"0\":{\"100\":1}}],[\"rust\",{\"1\":{\"1\":1,\"9\":3,\"101\":1,\"102\":1,\"103\":1,\"104\":1,\"172\":1,\"201\":2,\"202\":1}}],[\"rps\",{\"1\":{\"4\":1}}],[\"own\",{\"0\":{\"141\":1},\"1\":{\"211\":1}}],[\"omitted\",{\"1\":{\"42\":1,\"74\":1}}],[\"optimized\",{\"1\":{\"172\":1}}],[\"options\",{\"0\":{\"66\":1},\"1\":{\"42\":2,\"66\":1}}],[\"option\",{\"1\":{\"39\":1,\"42\":4,\"78\":1,\"79\":1,\"80\":1}}],[\"opened\",{\"1\":{\"46\":2}}],[\"operations\",{\"1\":{\"41\":1,\"171\":1}}],[\"other\",{\"1\":{\"41\":1,\"42\":2,\"44\":1,\"74\":1,\"159\":1,\"171\":1,\"172\":1,\"204\":1}}],[\"otherwise\",{\"1\":{\"40\":1,\"87\":1,\"172\":1,\"204\":1}}],[\"occurs\",{\"1\":{\"29\":1,\"149\":1}}],[\"objects\",{\"1\":{\"48\":1,\"81\":1,\"124\":1}}],[\"object\",{\"1\":{\"23\":1,\"27\":1,\"38\":2,\"41\":1,\"131\":1,\"138\":1,\"139\":1,\"141\":2,\"147\":1,\"168\":1,\"171\":1,\"172\":1,\"188\":1}}],[\"overview\",{\"0\":{\"169\":1}}],[\"over\",{\"1\":{\"22\":1,\"184\":1}}],[\"order\",{\"1\":{\"42\":4,\"70\":1,\"71\":1}}],[\"or\",{\"1\":{\"8\":2,\"27\":1,\"31\":1,\"33\":1,\"35\":2,\"37\":2,\"42\":2,\"48\":1,\"52\":2,\"54\":1,\"70\":1,\"71\":1,\"72\":1,\"74\":1,\"78\":1,\"79\":1,\"80\":1,\"82\":1,\"129\":1,\"136\":1,\"141\":1,\"147\":1,\"151\":1,\"153\":1,\"155\":2,\"157\":2,\"159\":1,\"168\":2,\"172\":1,\"173\":1,\"176\":1,\"177\":1,\"184\":1,\"194\":1,\"202\":1,\"212\":1}}],[\"once\",{\"1\":{\"42\":1,\"142\":1}}],[\"only\",{\"1\":{\"35\":1,\"38\":1,\"42\":3,\"55\":1,\"74\":1,\"75\":1,\"81\":1,\"141\":1,\"142\":1,\"155\":1,\"172\":2,\"185\":1,\"197\":2,\"198\":1,\"202\":2,\"204\":1,\"208\":1}}],[\"ones\",{\"1\":{\"48\":1,\"196\":1}}],[\"one\",{\"0\":{\"45\":1},\"1\":{\"9\":1,\"35\":1,\"37\":1,\"43\":1,\"75\":1,\"124\":1,\"155\":1,\"157\":1,\"159\":1}}],[\"on\",{\"0\":{\"141\":1},\"1\":{\"4\":3,\"5\":2,\"9\":1,\"39\":1,\"41\":2,\"42\":4,\"70\":1,\"74\":2,\"78\":1,\"79\":1,\"97\":1,\"139\":1,\"172\":1,\"177\":1,\"180\":1,\"182\":4,\"184\":1,\"185\":1,\"188\":3,\"198\":1,\"202\":2,\"204\":1}}],[\"our\",{\"1\":{\"4\":1,\"10\":1,\"141\":1,\"142\":1}}],[\"offset\",{\"0\":{\"13\":1},\"1\":{\"13\":1,\"14\":2}}],[\"offical\",{\"1\":{\"9\":1}}],[\"official\",{\"1\":{\"9\":1}}],[\"of\",{\"0\":{\"13\":1},\"1\":{\"3\":1,\"4\":1,\"8\":1,\"9\":1,\"15\":1,\"17\":1,\"20\":2,\"22\":1,\"27\":1,\"29\":2,\"31\":1,\"33\":2,\"35\":2,\"37\":2,\"39\":3,\"42\":14,\"43\":1,\"48\":1,\"49\":1,\"50\":3,\"52\":1,\"54\":1,\"57\":1,\"67\":1,\"70\":1,\"71\":1,\"72\":2,\"73\":1,\"75\":2,\"77\":1,\"78\":1,\"79\":1,\"80\":1,\"84\":1,\"97\":1,\"127\":1,\"129\":1,\"139\":1,\"140\":3,\"141\":1,\"142\":1,\"147\":1,\"149\":2,\"151\":1,\"153\":2,\"155\":2,\"157\":2,\"159\":2,\"161\":1,\"164\":1,\"166\":1,\"168\":2,\"173\":1,\"174\":1,\"177\":1,\"185\":4,\"192\":1,\"198\":3,\"202\":1,\"204\":6,\"206\":1,\"209\":1,\"210\":1}}],[\"smallint\",{\"0\":{\"202\":1},\"1\":{\"201\":2,\"202\":4,\"208\":2,\"211\":1}}],[\"sleep\",{\"1\":{\"180\":1}}],[\"shutdown=\",{\"1\":{\"188\":1}}],[\"shutdown\",{\"1\":{\"184\":1,\"185\":1}}],[\"shutting\",{\"1\":{\"177\":1}}],[\"should\",{\"1\":{\"8\":1,\"29\":1,\"149\":1,\"159\":1}}],[\"shows\",{\"1\":{\"1\":1}}],[\"safety\",{\"1\":{\"199\":1,\"209\":1}}],[\"saves\",{\"1\":{\"182\":1,\"188\":1}}],[\"savepoint\",{\"0\":{\"160\":1,\"163\":1,\"165\":1},\"1\":{\"116\":1,\"161\":7,\"164\":7,\"166\":6}}],[\"say\",{\"1\":{\"141\":1}}],[\"same\",{\"1\":{\"4\":3,\"5\":1,\"31\":1,\"45\":1,\"54\":1,\"70\":1,\"71\":1,\"72\":1,\"151\":1,\"153\":1}}],[\"scope\",{\"1\":{\"182\":1}}],[\"scrollable\",{\"1\":{\"82\":1,\"168\":1}}],[\"scroll\",{\"1\":{\"82\":1,\"168\":1}}],[\"schema\",{\"1\":{\"29\":1,\"149\":1}}],[\"spent\",{\"1\":{\"159\":1}}],[\"specified\",{\"1\":{\"42\":1,\"70\":1,\"71\":1,\"72\":1,\"164\":1,\"172\":1}}],[\"specifies\",{\"1\":{\"42\":1}}],[\"specify\",{\"1\":{\"17\":1,\"82\":1,\"87\":1,\"92\":1,\"93\":1,\"95\":1,\"198\":1,\"202\":1,\"206\":1}}],[\"split\",{\"1\":{\"97\":1}}],[\"space\",{\"1\":{\"48\":1}}],[\"synchronouscommit\",{\"1\":{\"39\":1}}],[\"synchronous\",{\"1\":{\"39\":3}}],[\"systems\",{\"1\":{\"42\":2,\"70\":1,\"74\":2}}],[\"system\",{\"1\":{\"4\":1,\"42\":1,\"74\":1}}],[\"ssl\",{\"0\":{\"68\":1},\"1\":{\"11\":4,\"42\":3,\"68\":1,\"69\":1}}],[\"s\",{\"0\":{\"175\":1},\"1\":{\"9\":1,\"20\":1,\"40\":1,\"87\":1,\"103\":1,\"141\":1,\"177\":1,\"185\":1,\"197\":1,\"198\":1,\"202\":2,\"203\":1,\"204\":1,\"205\":1,\"206\":1,\"211\":1,\"212\":2}}],[\"stop\",{\"1\":{\"29\":1,\"57\":1,\"149\":1,\"180\":1,\"182\":2,\"188\":2}}],[\"standard\",{\"0\":{\"184\":1},\"1\":{\"179\":1,\"181\":1,\"187\":1,\"189\":1}}],[\"state\",{\"1\":{\"182\":1,\"184\":2,\"185\":1,\"188\":7}}],[\"statements\",{\"1\":{\"29\":2,\"35\":1,\"37\":1,\"52\":1,\"149\":2,\"153\":1,\"155\":1,\"157\":1,\"159\":1,\"173\":1}}],[\"statement\",{\"1\":{\"27\":3,\"31\":3,\"33\":3,\"35\":2,\"37\":2,\"52\":3,\"54\":3,\"147\":3,\"151\":3,\"153\":2,\"155\":2,\"157\":2,\"168\":2,\"173\":2}}],[\"status\",{\"0\":{\"50\":1},\"1\":{\"50\":1}}],[\"start\",{\"0\":{\"85\":1,\"175\":1},\"1\":{\"85\":1,\"141\":1,\"144\":1,\"168\":1,\"176\":1,\"180\":3,\"182\":4,\"184\":2,\"185\":3,\"188\":4,\"190\":2}}],[\"starting\",{\"1\":{\"70\":1}}],[\"startup=\",{\"1\":{\"188\":1}}],[\"startup\",{\"1\":{\"41\":1,\"142\":1,\"159\":1,\"180\":1,\"184\":1,\"185\":1}}],[\"started\",{\"1\":{\"41\":1,\"171\":1}}],[\"starts\",{\"1\":{\"27\":1,\"33\":1,\"52\":1,\"147\":1}}],[\"strongly\",{\"1\":{\"179\":1,\"181\":1,\"187\":1,\"189\":1}}],[\"structure\",{\"1\":{\"159\":1}}],[\"struct\",{\"1\":{\"79\":1}}],[\"struggle\",{\"1\":{\"8\":1}}],[\"str\",{\"1\":{\"27\":1,\"31\":1,\"52\":1,\"54\":1,\"127\":1,\"129\":1,\"134\":1,\"136\":1,\"147\":1,\"151\":1,\"193\":1,\"194\":1,\"195\":3,\"198\":2,\"203\":1,\"208\":5,\"212\":1}}],[\"string\",{\"1\":{\"17\":1,\"27\":2,\"31\":2,\"33\":2,\"35\":2,\"37\":2,\"42\":1,\"52\":2,\"54\":2,\"103\":1,\"104\":1,\"147\":2,\"151\":2,\"153\":2,\"155\":2,\"157\":2,\"168\":2,\"201\":2,\"203\":3,\"212\":1}}],[\"step\",{\"1\":{\"9\":2}}],[\"still\",{\"1\":{\"5\":1}}],[\"such\",{\"1\":{\"212\":1}}],[\"successful\",{\"1\":{\"42\":1}}],[\"sun\",{\"1\":{\"212\":9}}],[\"subclasses\",{\"1\":{\"97\":1}}],[\"sure\",{\"1\":{\"8\":1,\"172\":1}}],[\"supported\",{\"0\":{\"207\":1},\"1\":{\"42\":1,\"74\":1,\"101\":1,\"208\":2}}],[\"supports\",{\"1\":{\"27\":1,\"33\":1,\"52\":1,\"147\":1,\"211\":1}}],[\"support\",{\"1\":{\"3\":1,\"174\":1,\"196\":1,\"197\":2,\"198\":2,\"206\":1}}],[\"size=2\",{\"1\":{\"185\":1}}],[\"size=10\",{\"1\":{\"43\":1,\"44\":1,\"45\":1,\"46\":1,\"180\":1,\"182\":1,\"184\":1,\"188\":1,\"190\":1}}],[\"size\",{\"0\":{\"61\":1},\"1\":{\"41\":2,\"42\":2,\"48\":1,\"49\":2,\"50\":4,\"58\":1,\"61\":1}}],[\"simple\",{\"0\":{\"208\":1},\"1\":{\"29\":1,\"149\":1,\"209\":1}}],[\"singlequeryresult\",{\"0\":{\"132\":1},\"1\":{\"22\":1,\"35\":1,\"124\":1,\"134\":1,\"136\":1,\"155\":1}}],[\"single\",{\"1\":{\"22\":2,\"23\":1,\"55\":1,\"56\":1,\"72\":1,\"170\":1}}],[\"since\",{\"1\":{\"8\":1,\"9\":1}}],[\"side\",{\"1\":{\"20\":1,\"41\":1,\"139\":1,\"159\":1,\"171\":1,\"202\":2,\"204\":1}}],[\"site\",{\"1\":{\"9\":1}}],[\"situations\",{\"1\":{\"97\":1,\"173\":1,\"184\":1,\"204\":1}}],[\"situation\",{\"1\":{\"4\":1,\"83\":1,\"198\":1}}],[\"significant\",{\"1\":{\"5\":2,\"172\":1}}],[\"segment\",{\"1\":{\"208\":1}}],[\"search\",{\"1\":{\"172\":1}}],[\"sequential\",{\"1\":{\"159\":1}}],[\"sequence\",{\"1\":{\"20\":1,\"29\":2,\"149\":2}}],[\"sending\",{\"1\":{\"159\":1,\"184\":1}}],[\"send\",{\"1\":{\"159\":7,\"177\":1}}],[\"sent\",{\"1\":{\"42\":2,\"78\":1,\"80\":1,\"159\":1}}],[\"self\",{\"1\":{\"129\":2,\"136\":2}}],[\"select\",{\"1\":{\"14\":2,\"16\":2,\"18\":2,\"27\":1,\"31\":1,\"35\":1,\"37\":1,\"52\":1,\"54\":1,\"83\":1,\"127\":1,\"129\":1,\"134\":1,\"136\":1,\"147\":1,\"151\":1,\"155\":1,\"157\":1,\"159\":4,\"168\":1,\"177\":1,\"180\":1,\"182\":1,\"184\":1,\"185\":1,\"188\":1,\"190\":1,\"192\":1,\"193\":1,\"195\":1,\"198\":1,\"200\":1,\"211\":1,\"212\":2}}],[\"separately\",{\"1\":{\"43\":1,\"73\":1}}],[\"separate\",{\"0\":{\"43\":1}}],[\"separated\",{\"1\":{\"29\":2,\"149\":2}}],[\"section\",{\"1\":{\"170\":1,\"196\":1}}],[\"secondary\",{\"1\":{\"75\":1}}],[\"seconds\",{\"1\":{\"42\":2}}],[\"sec\",{\"1\":{\"42\":8}}],[\"session\",{\"0\":{\"75\":1},\"1\":{\"42\":5,\"75\":1}}],[\"serde\",{\"1\":{\"201\":2}}],[\"services\",{\"1\":{\"182\":2}}],[\"serve\",{\"1\":{\"4\":1}}],[\"servers\",{\"1\":{\"4\":1,\"75\":1}}],[\"server\",{\"1\":{\"4\":2,\"5\":1,\"11\":1,\"42\":3,\"66\":1,\"75\":1,\"159\":4}}],[\"serializable\",{\"1\":{\"39\":1}}],[\"semicolons\",{\"1\":{\"29\":2,\"149\":2}}],[\"see\",{\"1\":{\"17\":1,\"211\":1,\"212\":1}}],[\"sets\",{\"1\":{\"42\":1,\"79\":2,\"80\":1}}],[\"set\",{\"1\":{\"11\":1,\"41\":2,\"42\":3,\"61\":1,\"62\":1,\"63\":1,\"64\":1,\"65\":1,\"66\":1,\"67\":1,\"68\":1,\"69\":1,\"73\":1,\"74\":2,\"75\":1,\"76\":1,\"78\":1,\"204\":2}}],[\"settings\",{\"1\":{\"10\":1}}],[\"setting\",{\"0\":{\"9\":1}}],[\"setup\",{\"1\":{\"4\":1}}],[\"several\",{\"1\":{\"8\":1}}],[\"sql\",{\"1\":{\"4\":1,\"29\":1,\"46\":1,\"149\":1}}],[\"sockets\",{\"1\":{\"42\":4,\"70\":1,\"78\":1,\"79\":1,\"80\":1}}],[\"socket\",{\"1\":{\"42\":2,\"73\":1,\"74\":1,\"77\":1}}],[\"social\",{\"1\":{\"3\":1,\"174\":1}}],[\"solution\",{\"0\":{\"14\":1,\"16\":1,\"18\":1,\"20\":1}}],[\"solves\",{\"1\":{\"8\":1}}],[\"source\",{\"1\":{\"9\":1}}],[\"so\",{\"1\":{\"4\":1,\"11\":1,\"33\":1,\"41\":1,\"102\":1,\"141\":2,\"142\":1,\"172\":1,\"184\":1,\"185\":1}}],[\"somedatainbytes\",{\"1\":{\"197\":1,\"198\":1}}],[\"sometitle\",{\"1\":{\"203\":2}}],[\"sometimes\",{\"1\":{\"35\":1,\"155\":1}}],[\"something\",{\"1\":{\"8\":1,\"83\":1,\"168\":1,\"194\":1,\"204\":1}}],[\"somewhere\",{\"1\":{\"11\":1}}],[\"some\",{\"1\":{\"3\":1,\"20\":3,\"22\":1,\"31\":1,\"37\":1,\"46\":1,\"54\":1,\"83\":1,\"124\":1,\"151\":1,\"157\":1,\"159\":2,\"168\":1,\"170\":1,\"173\":1,\"174\":1,\"184\":1,\"185\":3,\"196\":1,\"197\":1,\"198\":1,\"204\":1,\"211\":1}}],[\"geo\",{\"0\":{\"206\":1},\"1\":{\"206\":5}}],[\"getattr\",{\"1\":{\"188\":2}}],[\"get\",{\"1\":{\"3\":1,\"5\":1,\"23\":1,\"55\":1,\"56\":1,\"101\":1,\"102\":1,\"127\":1,\"129\":1,\"134\":1,\"136\":1,\"141\":1,\"174\":1,\"180\":1,\"182\":2,\"184\":1,\"185\":1,\"188\":2,\"190\":1,\"197\":1}}],[\"go\",{\"1\":{\"172\":1,\"208\":1}}],[\"good\",{\"1\":{\"141\":1,\"212\":2}}],[\"goals\",{\"1\":{\"1\":1}}],[\"gives\",{\"1\":{\"41\":1,\"171\":1}}],[\"give\",{\"1\":{\"22\":1,\"170\":1}}],[\"git\",{\"1\":{\"10\":1,\"176\":1}}],[\"guide\",{\"0\":{\"8\":1},\"1\":{\"8\":1}}],[\"lseg\",{\"1\":{\"199\":1,\"201\":1,\"206\":2,\"208\":1}}],[\"lsegarray\",{\"1\":{\"199\":1}}],[\"ll\",{\"1\":{\"196\":1}}],[\"last\",{\"0\":{\"91\":1},\"1\":{\"91\":2}}],[\"level=isolationlevel\",{\"1\":{\"39\":1}}],[\"level\",{\"1\":{\"39\":2,\"42\":1,\"73\":1,\"140\":2}}],[\"let\",{\"0\":{\"175\":1},\"1\":{\"20\":1,\"177\":1,\"197\":1,\"198\":1,\"202\":1,\"203\":1,\"204\":1,\"205\":1,\"206\":1,\"211\":1,\"212\":2}}],[\"less\",{\"1\":{\"8\":1}}],[\"life\",{\"1\":{\"202\":2}}],[\"lifespan=lifespan\",{\"1\":{\"184\":1,\"185\":1}}],[\"lifespan\",{\"1\":{\"184\":1,\"185\":1}}],[\"litestar\",{\"0\":{\"187\":1},\"1\":{\"187\":2,\"188\":5}}],[\"lib\",{\"1\":{\"42\":1}}],[\"library\",{\"1\":{\"41\":1,\"101\":1,\"171\":1,\"172\":2}}],[\"linesegment\",{\"1\":{\"201\":3,\"206\":2,\"208\":1}}],[\"linestring\",{\"1\":{\"201\":1}}],[\"linearray\",{\"1\":{\"199\":1}}],[\"line\",{\"1\":{\"42\":1,\"66\":1,\"199\":1,\"201\":2,\"206\":4,\"208\":4}}],[\"lints\",{\"1\":{\"10\":1}}],[\"linting\",{\"0\":{\"10\":1}}],[\"list\",{\"1\":{\"22\":1,\"27\":2,\"31\":2,\"33\":2,\"35\":2,\"37\":2,\"52\":3,\"54\":2,\"83\":1,\"127\":2,\"129\":2,\"147\":2,\"151\":2,\"153\":2,\"155\":2,\"157\":2,\"159\":2,\"168\":3,\"177\":1,\"182\":1,\"188\":1,\"190\":1,\"198\":1,\"204\":6}}],[\"limited\",{\"1\":{\"202\":1}}],[\"limit\",{\"0\":{\"13\":1},\"1\":{\"13\":1,\"14\":2,\"42\":3,\"73\":1}}],[\"like\",{\"1\":{\"1\":1,\"159\":1,\"168\":1,\"184\":2,\"185\":2,\"204\":1}}],[\"lowercase\",{\"1\":{\"198\":1}}],[\"long\",{\"1\":{\"184\":1,\"185\":3,\"203\":2}}],[\"logic\",{\"1\":{\"184\":1,\"185\":2}}],[\"lot\",{\"1\":{\"84\":1,\"97\":1,\"185\":2}}],[\"lots\",{\"1\":{\"8\":1}}],[\"love\",{\"1\":{\"8\":1}}],[\"located\",{\"1\":{\"4\":2,\"5\":2}}],[\"locate\",{\"1\":{\"4\":1}}],[\"localhost\",{\"1\":{\"11\":1,\"42\":2,\"43\":1,\"44\":1,\"45\":1,\"46\":1,\"141\":1,\"142\":1,\"180\":1,\"182\":1,\"184\":1,\"185\":1,\"188\":1,\"190\":1}}],[\"locally\",{\"1\":{\"8\":1}}],[\"local\",{\"0\":{\"6\":1},\"1\":{\"4\":3}}],[\"load\",{\"0\":{\"76\":1},\"1\":{\"1\":1,\"41\":1,\"42\":1,\"52\":1,\"76\":1,\"177\":1}}],[\"hours\",{\"1\":{\"42\":1,\"78\":1}}],[\"holds\",{\"1\":{\"22\":1,\"41\":1,\"170\":1,\"171\":1}}],[\"hostaddr\",{\"0\":{\"71\":1},\"1\":{\"71\":1}}],[\"hostaddrs\",{\"1\":{\"70\":1,\"71\":3}}],[\"host=\",{\"1\":{\"42\":1,\"43\":1,\"190\":1}}],[\"host3\",{\"1\":{\"42\":1}}],[\"host2\",{\"1\":{\"42\":1}}],[\"host1\",{\"1\":{\"42\":1}}],[\"hostname\",{\"1\":{\"42\":1}}],[\"hostnames\",{\"1\":{\"42\":1,\"73\":1}}],[\"hosts\",{\"0\":{\"76\":1},\"1\":{\"42\":8,\"70\":3,\"71\":1,\"72\":2}}],[\"host\",{\"0\":{\"70\":1},\"1\":{\"11\":2,\"42\":4,\"58\":1,\"70\":2,\"73\":1,\"76\":1}}],[\"hook\",{\"1\":{\"10\":1}}],[\"however\",{\"1\":{\"5\":1}}],[\"how\",{\"0\":{\"2\":1},\"1\":{\"39\":4,\"42\":1,\"43\":1,\"62\":1,\"139\":1,\"140\":3,\"173\":1,\"212\":1}}],[\"handle\",{\"1\":{\"41\":1,\"102\":1,\"141\":1}}],[\"have\",{\"1\":{\"5\":2,\"8\":1,\"10\":1,\"11\":3,\"20\":1,\"22\":1,\"58\":1,\"97\":1,\"141\":1,\"142\":1,\"159\":1,\"170\":1,\"172\":2,\"177\":1,\"184\":2,\"185\":2,\"191\":1,\"196\":1,\"197\":1,\"198\":1,\"199\":1,\"202\":1,\"203\":1,\"204\":3,\"205\":1,\"206\":1}}],[\"has\",{\"1\":{\"1\":2,\"17\":1,\"42\":1,\"45\":1,\"50\":1,\"58\":1,\"74\":1,\"92\":1,\"93\":1,\"95\":1,\"196\":1,\"201\":1}}],[\"here\",{\"1\":{\"4\":1,\"12\":1,\"58\":1,\"83\":1,\"173\":1,\"178\":1,\"186\":1,\"197\":1,\"208\":1,\"213\":1}}],[\"highly\",{\"1\":{\"10\":1}}],[\"high\",{\"1\":{\"1\":1,\"52\":1,\"177\":1}}],[\"cp\",{\"1\":{\"42\":1}}],[\"clustered\",{\"1\":{\"75\":1}}],[\"classes\",{\"1\":{\"172\":1,\"202\":1}}],[\"class=exampleofasclass\",{\"1\":{\"129\":1,\"136\":1}}],[\"class\",{\"0\":{\"128\":1,\"135\":1,\"193\":1},\"1\":{\"129\":7,\"136\":7,\"193\":3,\"194\":1,\"195\":11,\"197\":1,\"198\":1,\"212\":1}}],[\"classic\",{\"1\":{\"58\":1}}],[\"clause\",{\"0\":{\"15\":1},\"1\":{\"15\":1,\"17\":1}}],[\"client\",{\"1\":{\"42\":1,\"159\":3}}],[\"closed\",{\"1\":{\"42\":1,\"46\":1,\"111\":1,\"118\":1,\"123\":1}}],[\"close\",{\"0\":{\"57\":1,\"86\":1},\"1\":{\"40\":1,\"57\":2,\"86\":2,\"121\":1,\"177\":2,\"180\":2,\"182\":2,\"184\":2,\"185\":2,\"188\":2,\"190\":1,\"197\":1,\"198\":1,\"202\":1,\"203\":1,\"204\":1,\"205\":1,\"206\":1}}],[\"crucial\",{\"1\":{\"40\":1}}],[\"credentials\",{\"1\":{\"11\":1}}],[\"creation\",{\"1\":{\"161\":1}}],[\"creators\",{\"1\":{\"3\":1,\"174\":1}}],[\"creates\",{\"1\":{\"41\":1,\"171\":1,\"188\":1}}],[\"created\",{\"1\":{\"9\":1}}],[\"create\",{\"0\":{\"45\":1,\"160\":1},\"1\":{\"1\":1,\"8\":2,\"29\":2,\"41\":2,\"58\":1,\"60\":1,\"85\":1,\"149\":2,\"161\":1,\"164\":1,\"166\":1,\"168\":1,\"182\":1,\"195\":1,\"210\":1,\"211\":3,\"212\":3}}],[\"currently\",{\"1\":{\"124\":1}}],[\"current\",{\"1\":{\"50\":1}}],[\"cursorclosederror\",{\"0\":{\"123\":1}}],[\"cursorcloseerror\",{\"0\":{\"121\":1}}],[\"cursorfetcherror\",{\"0\":{\"122\":1}}],[\"cursorstarterror\",{\"0\":{\"120\":1}}],[\"cursor\",{\"0\":{\"81\":1,\"82\":1,\"83\":1,\"84\":1,\"167\":1},\"1\":{\"22\":2,\"40\":1,\"81\":2,\"82\":2,\"83\":4,\"84\":1,\"85\":2,\"86\":2,\"87\":3,\"88\":2,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":2,\"95\":1,\"96\":2,\"97\":1,\"119\":1,\"120\":1,\"121\":1,\"122\":1,\"168\":7,\"170\":2,\"172\":1,\"177\":1}}],[\"custom\",{\"1\":{\"22\":1,\"127\":2,\"129\":3,\"131\":3,\"134\":2,\"136\":3,\"138\":3,\"170\":1,\"194\":1,\"195\":1,\"198\":3,\"211\":5}}],[\"choose\",{\"1\":{\"142\":1}}],[\"chandr\",{\"1\":{\"177\":1}}],[\"changes\",{\"1\":{\"141\":3}}],[\"change\",{\"1\":{\"48\":1}}],[\"chainable\",{\"1\":{\"22\":1,\"58\":1}}],[\"character\",{\"1\":{\"17\":1}}],[\"checker\",{\"1\":{\"172\":1}}],[\"checked\",{\"1\":{\"4\":1}}],[\"checking\",{\"0\":{\"10\":1}}],[\"checks\",{\"1\":{\"4\":1}}],[\"check\",{\"1\":{\"4\":1,\"9\":1,\"58\":1}}],[\"cert\",{\"1\":{\"11\":1}}],[\"calculations\",{\"1\":{\"184\":1}}],[\"call\",{\"1\":{\"177\":2,\"194\":1}}],[\"called\",{\"1\":{\"142\":1}}],[\"calls\",{\"1\":{\"142\":2}}],[\"callable\",{\"1\":{\"131\":1,\"138\":1,\"195\":1}}],[\"calling\",{\"1\":{\"70\":1,\"71\":1,\"72\":1}}],[\"cast\",{\"1\":{\"180\":3,\"184\":2,\"185\":1,\"188\":4}}],[\"cases\",{\"1\":{\"159\":1}}],[\"case\",{\"1\":{\"72\":1}}],[\"caution\",{\"1\":{\"52\":1,\"177\":1}}],[\"capacity\",{\"1\":{\"48\":1}}],[\"cafe\",{\"1\":{\"18\":2}}],[\"ca\",{\"0\":{\"69\":1},\"1\":{\"11\":1,\"42\":2,\"69\":1}}],[\"cannot\",{\"0\":{\"19\":1},\"1\":{\"20\":1,\"41\":1,\"104\":1}}],[\"can\",{\"1\":{\"3\":1,\"4\":2,\"5\":1,\"9\":1,\"10\":1,\"11\":1,\"12\":1,\"22\":3,\"27\":1,\"38\":1,\"42\":3,\"52\":1,\"58\":1,\"70\":1,\"71\":1,\"72\":1,\"73\":1,\"75\":1,\"81\":1,\"87\":1,\"97\":1,\"101\":1,\"102\":1,\"129\":1,\"136\":1,\"139\":1,\"141\":2,\"142\":1,\"144\":1,\"145\":1,\"147\":1,\"159\":1,\"168\":1,\"170\":3,\"172\":1,\"173\":3,\"174\":1,\"176\":1,\"192\":1,\"193\":1,\"194\":2,\"196\":1,\"198\":2,\"202\":1,\"203\":2,\"204\":1,\"208\":3,\"209\":1,\"211\":2,\"212\":3}}],[\"circle\",{\"1\":{\"199\":1,\"201\":3,\"206\":4,\"208\":3}}],[\"circlearray\",{\"1\":{\"199\":1}}],[\"ci\",{\"1\":{\"8\":2}}],[\"column\",{\"1\":{\"197\":1,\"198\":1,\"202\":1,\"203\":1,\"204\":1,\"205\":1,\"206\":1}}],[\"covert\",{\"1\":{\"101\":1,\"102\":1}}],[\"cool\",{\"1\":{\"56\":1,\"142\":1}}],[\"code\",{\"1\":{\"52\":1,\"97\":1,\"172\":1,\"177\":1,\"184\":1,\"185\":1}}],[\"count=10\",{\"1\":{\"95\":1}}],[\"count\",{\"1\":{\"37\":1,\"95\":1,\"157\":1}}],[\"could\",{\"1\":{\"11\":1}}],[\"correct\",{\"1\":{\"14\":1,\"16\":1,\"18\":1,\"20\":1}}],[\"concentrate\",{\"1\":{\"172\":1}}],[\"confidence\",{\"1\":{\"172\":1}}],[\"configure\",{\"1\":{\"11\":1,\"39\":3,\"42\":1,\"66\":1,\"140\":2}}],[\"configured\",{\"1\":{\"10\":1}}],[\"configuration\",{\"1\":{\"4\":1,\"68\":1,\"70\":1,\"71\":1,\"72\":1,\"107\":1}}],[\"converted\",{\"1\":{\"194\":1,\"203\":1}}],[\"convert\",{\"1\":{\"103\":1,\"104\":1}}],[\"converts\",{\"1\":{\"13\":1}}],[\"conn\",{\"0\":{\"62\":1},\"1\":{\"42\":1,\"192\":2,\"193\":2,\"195\":2}}],[\"connecting\",{\"1\":{\"42\":4}}],[\"connectionclosederror\",{\"0\":{\"111\":1}}],[\"connectionexecuteerror\",{\"0\":{\"110\":1}}],[\"connectionpoolexecuteerror\",{\"0\":{\"108\":1}}],[\"connectionpoolconfigurationerror\",{\"0\":{\"107\":1}}],[\"connectionpoolbuilderror\",{\"0\":{\"106\":1}}],[\"connectionpoolbuilder\",{\"0\":{\"59\":1},\"1\":{\"22\":1,\"58\":2,\"60\":1}}],[\"connectionpool\",{\"0\":{\"42\":1},\"1\":{\"14\":3,\"16\":3,\"18\":3,\"20\":3,\"22\":3,\"23\":1,\"41\":1,\"43\":2,\"44\":2,\"45\":1,\"46\":5,\"52\":1,\"56\":1,\"58\":1,\"60\":1,\"83\":2,\"97\":1,\"127\":1,\"129\":1,\"134\":1,\"136\":1,\"141\":2,\"142\":2,\"159\":2,\"177\":3,\"180\":4,\"182\":4,\"184\":3,\"185\":2,\"188\":6,\"190\":2,\"197\":2,\"198\":2,\"200\":2,\"202\":2,\"203\":2,\"204\":2,\"205\":2,\"206\":2,\"211\":2,\"212\":2}}],[\"connection\",{\"0\":{\"23\":1,\"25\":1,\"41\":1,\"43\":1,\"44\":1,\"45\":1,\"46\":1,\"47\":1,\"56\":1,\"58\":1,\"171\":1},\"1\":{\"4\":1,\"22\":3,\"23\":4,\"27\":4,\"29\":3,\"31\":3,\"33\":3,\"35\":2,\"37\":3,\"38\":1,\"39\":3,\"40\":5,\"41\":7,\"42\":8,\"43\":1,\"48\":1,\"50\":7,\"52\":3,\"55\":2,\"56\":4,\"57\":1,\"61\":1,\"62\":3,\"73\":1,\"78\":1,\"80\":1,\"83\":3,\"97\":1,\"105\":1,\"106\":1,\"107\":1,\"108\":1,\"109\":1,\"110\":1,\"111\":1,\"118\":1,\"123\":1,\"127\":3,\"129\":3,\"134\":2,\"136\":3,\"141\":7,\"142\":3,\"147\":3,\"149\":3,\"151\":3,\"153\":3,\"155\":3,\"157\":3,\"159\":3,\"164\":1,\"166\":3,\"168\":1,\"170\":5,\"171\":3,\"177\":4,\"180\":5,\"182\":3,\"184\":13,\"185\":8,\"188\":4,\"190\":3,\"197\":1,\"198\":1,\"202\":1,\"203\":1,\"204\":1,\"205\":1,\"206\":1,\"211\":1,\"212\":1}}],[\"connections\",{\"1\":{\"4\":2,\"22\":1,\"41\":1,\"42\":1,\"74\":1,\"77\":1,\"170\":1}}],[\"connect\",{\"0\":{\"73\":1},\"1\":{\"42\":5,\"43\":1,\"45\":3,\"75\":1}}],[\"content=query\",{\"1\":{\"184\":1,\"185\":1}}],[\"contextlib\",{\"1\":{\"184\":1,\"185\":1}}],[\"context\",{\"0\":{\"46\":1,\"142\":1},\"1\":{\"40\":1,\"55\":2,\"142\":3}}],[\"contain\",{\"1\":{\"204\":1}}],[\"contains\",{\"1\":{\"101\":1}}],[\"containing\",{\"1\":{\"70\":1}}],[\"contrast\",{\"1\":{\"159\":1}}],[\"control\",{\"0\":{\"141\":1,\"142\":1},\"1\":{\"77\":1}}],[\"controls\",{\"1\":{\"42\":2}}],[\"contributors\",{\"1\":{\"8\":2}}],[\"contributions\",{\"1\":{\"8\":1}}],[\"contribution\",{\"0\":{\"8\":1}}],[\"combination\",{\"1\":{\"42\":1}}],[\"common\",{\"1\":{\"12\":1,\"83\":1}}],[\"command\",{\"1\":{\"10\":1,\"42\":1,\"66\":1}}],[\"commands\",{\"1\":{\"9\":1}}],[\"committed\",{\"1\":{\"141\":1}}],[\"commit=synchronouscommit\",{\"1\":{\"39\":1}}],[\"commit\",{\"0\":{\"145\":1},\"1\":{\"10\":3,\"39\":2,\"40\":1,\"114\":1,\"141\":4,\"142\":1,\"145\":2}}],[\"community\",{\"0\":{\"3\":1,\"174\":1}}],[\"composite\",{\"0\":{\"211\":1},\"1\":{\"211\":1}}],[\"component\",{\"1\":{\"58\":1,\"172\":1}}],[\"components\",{\"0\":{\"21\":1,\"22\":1,\"169\":1,\"170\":1,\"215\":1},\"1\":{\"1\":1}}],[\"company\",{\"1\":{\"202\":1}}],[\"complex\",{\"1\":{\"184\":1,\"185\":1}}],[\"complete\",{\"0\":{\"180\":1,\"182\":1,\"188\":1,\"190\":1}}],[\"completes\",{\"1\":{\"159\":1}}],[\"complicated\",{\"1\":{\"141\":1}}],[\"computer\",{\"1\":{\"9\":1}}],[\"mypy\",{\"1\":{\"172\":1}}],[\"my\",{\"1\":{\"161\":2,\"164\":2,\"166\":1,\"204\":1}}],[\"mydb\",{\"1\":{\"42\":2}}],[\"msgspec\",{\"1\":{\"129\":1,\"136\":1}}],[\"musk\",{\"1\":{\"202\":2}}],[\"must\",{\"1\":{\"9\":1,\"15\":1,\"23\":1,\"27\":1,\"33\":1,\"35\":1,\"37\":1,\"41\":1,\"52\":3,\"55\":1,\"70\":1,\"71\":1,\"72\":1,\"92\":1,\"93\":1,\"95\":1,\"147\":1,\"155\":1,\"157\":1,\"159\":1,\"171\":1,\"177\":2,\"194\":1,\"197\":2,\"198\":3,\"203\":1,\"204\":1,\"205\":1}}],[\"much\",{\"1\":{\"172\":1,\"184\":1}}],[\"multiple\",{\"1\":{\"42\":3,\"70\":2,\"71\":2,\"72\":2,\"73\":1,\"124\":1,\"159\":1}}],[\"michail\",{\"1\":{\"177\":1}}],[\"minimal\",{\"1\":{\"177\":1}}],[\"minimizing\",{\"1\":{\"159\":1}}],[\"minimum\",{\"1\":{\"41\":1}}],[\"mirror\",{\"1\":{\"1\":1}}],[\"money\",{\"1\":{\"199\":1,\"202\":4,\"208\":2}}],[\"moneyarray\",{\"1\":{\"199\":1}}],[\"most\",{\"1\":{\"12\":1,\"83\":1}}],[\"modedocs\",{\"1\":{\"173\":2}}],[\"model\",{\"1\":{\"129\":1,\"136\":1}}],[\"mode\",{\"0\":{\"68\":1},\"1\":{\"11\":4,\"42\":2}}],[\"more\",{\"1\":{\"4\":1,\"127\":1,\"129\":1,\"131\":2,\"134\":1,\"136\":1,\"138\":2,\"159\":1,\"173\":1,\"208\":1}}],[\"m\",{\"1\":{\"9\":1}}],[\"metadata\",{\"1\":{\"211\":2}}],[\"methods\",{\"0\":{\"25\":1,\"47\":1,\"59\":1,\"84\":1,\"125\":1,\"132\":1,\"143\":1},\"1\":{\"58\":2,\"84\":1,\"198\":1}}],[\"method\",{\"0\":{\"62\":1},\"1\":{\"23\":1,\"27\":1,\"31\":1,\"33\":2,\"40\":2,\"42\":1,\"52\":2,\"54\":1,\"56\":1,\"58\":1,\"62\":2,\"70\":1,\"71\":1,\"72\":1,\"82\":1,\"147\":1,\"151\":1,\"177\":1,\"194\":1}}],[\"messages\",{\"1\":{\"184\":1}}],[\"message\",{\"1\":{\"42\":1}}],[\"merging\",{\"1\":{\"8\":1}}],[\"media\",{\"1\":{\"3\":1,\"174\":1}}],[\"map\",{\"1\":{\"206\":1}}],[\"mapping\",{\"1\":{\"201\":1}}],[\"mark\",{\"1\":{\"203\":1}}],[\"marked\",{\"1\":{\"27\":1,\"33\":1,\"52\":1,\"147\":1}}],[\"mac\",{\"1\":{\"205\":1,\"208\":2}}],[\"macaddr6\",{\"1\":{\"201\":2,\"205\":2,\"208\":1}}],[\"macaddr6array\",{\"1\":{\"199\":1}}],[\"macaddr8\",{\"1\":{\"199\":1,\"201\":3,\"205\":3,\"208\":1}}],[\"macaddr8array\",{\"1\":{\"199\":1}}],[\"macaddr\",{\"1\":{\"104\":1,\"199\":1,\"201\":1,\"205\":1,\"208\":2}}],[\"macaddrconversionerror\",{\"0\":{\"104\":1}}],[\"machines\",{\"1\":{\"5\":1}}],[\"making\",{\"1\":{\"48\":1,\"184\":1}}],[\"makes\",{\"1\":{\"41\":1}}],[\"make\",{\"1\":{\"1\":3,\"4\":2,\"8\":2,\"17\":1,\"141\":1,\"168\":1,\"172\":1,\"177\":1,\"197\":1,\"209\":1}}],[\"may\",{\"1\":{\"42\":1}}],[\"max\",{\"0\":{\"61\":1},\"1\":{\"41\":1,\"42\":1,\"43\":1,\"44\":1,\"45\":1,\"46\":1,\"48\":1,\"49\":1,\"50\":1,\"58\":1,\"180\":1,\"182\":1,\"184\":1,\"185\":1,\"188\":1,\"190\":1}}],[\"maximum\",{\"1\":{\"4\":1,\"42\":2,\"50\":1,\"61\":1,\"80\":1}}],[\"manipulations\",{\"1\":{\"141\":1}}],[\"manager\",{\"0\":{\"46\":1,\"142\":1},\"1\":{\"40\":1,\"55\":2,\"142\":3}}],[\"many\",{\"0\":{\"32\":1,\"152\":1},\"1\":{\"33\":1,\"153\":2}}],[\"manually\",{\"1\":{\"10\":1,\"142\":1,\"144\":1,\"145\":1}}],[\"made\",{\"1\":{\"22\":2,\"23\":1,\"40\":1,\"170\":2}}],[\"maturin\",{\"1\":{\"9\":3}}],[\"malware\",{\"1\":{\"8\":1}}],[\"main\",{\"1\":{\"1\":1,\"4\":1,\"13\":1,\"14\":2,\"16\":2,\"18\":2,\"20\":3,\"27\":1,\"29\":1,\"31\":1,\"33\":1,\"35\":1,\"37\":1,\"39\":1,\"40\":1,\"41\":1,\"46\":1,\"49\":1,\"52\":1,\"54\":1,\"55\":1,\"56\":1,\"57\":1,\"83\":1,\"85\":1,\"86\":1,\"87\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":1,\"95\":1,\"96\":1,\"100\":1,\"127\":1,\"129\":1,\"134\":1,\"136\":1,\"141\":4,\"142\":1,\"144\":1,\"145\":1,\"147\":1,\"149\":1,\"151\":1,\"153\":1,\"155\":1,\"157\":1,\"159\":1,\"161\":1,\"162\":1,\"164\":1,\"166\":1,\"168\":1,\"171\":1,\"177\":1,\"180\":1,\"182\":1,\"184\":1,\"185\":2,\"188\":1,\"190\":3,\"192\":1,\"193\":1,\"195\":1,\"197\":1,\"198\":1,\"200\":1,\"202\":1,\"203\":1,\"204\":1,\"205\":1,\"206\":1,\"211\":1,\"212\":1}}],[\"b\",{\"1\":{\"197\":1,\"198\":1}}],[\"blocked\",{\"1\":{\"185\":1}}],[\"blacksheep\",{\"0\":{\"181\":1},\"1\":{\"181\":2,\"182\":1}}],[\"break\",{\"1\":{\"173\":1}}],[\"bound\",{\"1\":{\"202\":1}}],[\"box\",{\"1\":{\"199\":1,\"201\":2,\"206\":3,\"208\":3}}],[\"boxarray\",{\"1\":{\"199\":1}}],[\"bool\",{\"1\":{\"208\":2}}],[\"boolean\",{\"1\":{\"199\":1}}],[\"boolarray\",{\"1\":{\"199\":1}}],[\"boost\",{\"1\":{\"5\":1}}],[\"boba\",{\"1\":{\"33\":2,\"153\":1}}],[\"banners\",{\"1\":{\"203\":3}}],[\"basecursorerror\",{\"0\":{\"119\":1}}],[\"baseconnectionerror\",{\"0\":{\"109\":1}}],[\"baseconnectionpoolerror\",{\"0\":{\"105\":1}}],[\"basetransactionerror\",{\"0\":{\"112\":1}}],[\"base\",{\"1\":{\"105\":1,\"109\":1,\"112\":1,\"119\":1}}],[\"based\",{\"1\":{\"97\":1}}],[\"bas\",{\"1\":{\"100\":1}}],[\"balancing\",{\"1\":{\"76\":1}}],[\"balance\",{\"0\":{\"76\":1},\"1\":{\"42\":1}}],[\"backward\",{\"0\":{\"95\":1,\"96\":1},\"1\":{\"95\":4,\"96\":2}}],[\"back\",{\"0\":{\"40\":1},\"1\":{\"40\":1}}],[\"batch\",{\"0\":{\"28\":1,\"148\":1},\"1\":{\"29\":1,\"149\":1}}],[\"bar\",{\"1\":{\"18\":2}}],[\"biba\",{\"1\":{\"153\":1}}],[\"bigger\",{\"1\":{\"202\":1}}],[\"big\",{\"1\":{\"22\":1}}],[\"bigint\",{\"0\":{\"202\":1},\"1\":{\"13\":1,\"14\":3,\"201\":2,\"202\":3,\"208\":2,\"211\":1}}],[\"binary\",{\"0\":{\"17\":1},\"1\":{\"17\":1}}],[\"bin\",{\"1\":{\"9\":1}}],[\"built\",{\"1\":{\"9\":1,\"81\":1}}],[\"building\",{\"1\":{\"106\":1}}],[\"builder\",{\"0\":{\"58\":1},\"1\":{\"22\":1}}],[\"build\",{\"0\":{\"60\":1},\"1\":{\"9\":1,\"38\":1,\"58\":1,\"193\":1}}],[\"but\",{\"1\":{\"5\":1,\"8\":1,\"9\":1,\"10\":1,\"13\":1,\"58\":1,\"141\":2,\"142\":1,\"153\":1,\"172\":1,\"173\":1,\"202\":1}}],[\"began\",{\"1\":{\"142\":1}}],[\"begin\",{\"0\":{\"144\":1},\"1\":{\"113\":1,\"141\":3,\"142\":2,\"144\":1}}],[\"behavior\",{\"1\":{\"76\":1,\"97\":1,\"173\":1}}],[\"because\",{\"1\":{\"33\":1,\"185\":1,\"196\":1,\"202\":1}}],[\"before\",{\"1\":{\"27\":1,\"31\":1,\"33\":1,\"35\":1,\"37\":1,\"41\":1,\"42\":2,\"52\":1,\"54\":1,\"78\":1,\"80\":1,\"147\":1,\"151\":1,\"153\":1,\"155\":1,\"157\":1,\"159\":2,\"171\":1}}],[\"below\",{\"1\":{\"9\":1,\"17\":1}}],[\"best\",{\"1\":{\"9\":2}}],[\"better\",{\"1\":{\"8\":2,\"185\":1,\"199\":1,\"209\":1}}],[\"between\",{\"1\":{\"5\":1,\"42\":1,\"79\":1,\"206\":1}}],[\"benchmark\",{\"1\":{\"4\":1}}],[\"benchmarks\",{\"0\":{\"4\":1},\"1\":{\"4\":4}}],[\"be\",{\"1\":{\"1\":1,\"8\":1,\"13\":1,\"22\":3,\"23\":1,\"27\":1,\"29\":1,\"33\":1,\"35\":1,\"37\":2,\"38\":1,\"41\":1,\"42\":8,\"52\":2,\"55\":1,\"70\":3,\"71\":3,\"72\":2,\"75\":1,\"80\":1,\"81\":1,\"87\":1,\"129\":1,\"136\":1,\"142\":1,\"147\":1,\"149\":1,\"155\":1,\"157\":2,\"159\":3,\"170\":3,\"171\":1,\"172\":4,\"173\":1,\"185\":2,\"194\":2,\"195\":1,\"196\":1,\"197\":1,\"198\":3,\"205\":1,\"208\":1,\"211\":1}}],[\"bytea\",{\"1\":{\"208\":1}}],[\"bytes\",{\"1\":{\"196\":1,\"197\":3,\"198\":4,\"208\":1}}],[\"by\",{\"1\":{\"1\":1,\"5\":1,\"29\":2,\"41\":1,\"70\":1,\"71\":1,\"72\":1,\"101\":1,\"149\":2,\"159\":2,\"172\":1,\"173\":1,\"202\":1,\"208\":1}}],[\"null\",{\"1\":{\"208\":1}}],[\"numeric\",{\"1\":{\"199\":1,\"208\":2}}],[\"numericarray\",{\"1\":{\"199\":1}}],[\"numbers\",{\"1\":{\"202\":2}}],[\"number=10\",{\"1\":{\"92\":1,\"93\":1}}],[\"number=100\",{\"1\":{\"87\":1}}],[\"number=5\",{\"1\":{\"83\":1,\"168\":1}}],[\"number\",{\"1\":{\"27\":1,\"33\":1,\"42\":2,\"52\":1,\"70\":1,\"71\":1,\"72\":1,\"80\":1,\"82\":2,\"87\":2,\"92\":1,\"93\":1,\"147\":1,\"168\":2,\"202\":1}}],[\"nickname\",{\"1\":{\"197\":2,\"198\":4}}],[\"n\",{\"1\":{\"87\":2}}],[\"nats\",{\"1\":{\"184\":1}}],[\"nanosec\",{\"1\":{\"42\":8}}],[\"naming\",{\"1\":{\"31\":1,\"54\":1,\"151\":1}}],[\"named\",{\"1\":{\"56\":1}}],[\"name=\",{\"1\":{\"43\":1}}],[\"names\",{\"1\":{\"42\":1}}],[\"name\",{\"0\":{\"67\":1},\"1\":{\"18\":2,\"29\":2,\"33\":1,\"42\":5,\"65\":1,\"67\":1,\"149\":2,\"153\":1,\"159\":2,\"161\":2,\"164\":2,\"166\":2,\"177\":1,\"180\":1,\"182\":1,\"184\":1,\"185\":1,\"188\":1,\"190\":1,\"192\":1,\"193\":2,\"195\":2,\"196\":1,\"197\":1,\"198\":3,\"200\":1,\"202\":1,\"203\":1,\"204\":1,\"205\":1,\"206\":1,\"211\":2}}],[\"none\",{\"1\":{\"14\":2,\"16\":2,\"18\":2,\"20\":2,\"27\":1,\"29\":1,\"31\":1,\"33\":1,\"35\":1,\"37\":1,\"39\":1,\"40\":1,\"46\":1,\"49\":1,\"52\":1,\"54\":1,\"55\":1,\"56\":1,\"57\":1,\"82\":1,\"83\":1,\"85\":1,\"86\":1,\"87\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":1,\"95\":1,\"96\":1,\"127\":1,\"129\":2,\"134\":1,\"136\":2,\"141\":4,\"142\":1,\"144\":1,\"145\":1,\"147\":1,\"149\":1,\"151\":1,\"153\":1,\"155\":1,\"157\":1,\"159\":3,\"161\":1,\"162\":1,\"164\":1,\"166\":1,\"168\":1,\"177\":1,\"180\":2,\"182\":2,\"184\":2,\"185\":3,\"188\":3,\"190\":1,\"192\":1,\"193\":1,\"195\":1,\"197\":1,\"198\":3,\"200\":1,\"202\":1,\"203\":1,\"204\":1,\"205\":1,\"206\":1,\"208\":1,\"211\":1,\"212\":1}}],[\"noticeable\",{\"1\":{\"172\":1}}],[\"notes\",{\"0\":{\"173\":1}}],[\"note\",{\"1\":{\"42\":1,\"73\":1}}],[\"nothing\",{\"1\":{\"33\":1}}],[\"not\",{\"1\":{\"8\":1,\"27\":1,\"31\":1,\"33\":1,\"35\":1,\"37\":2,\"52\":1,\"54\":1,\"82\":1,\"101\":2,\"102\":1,\"147\":1,\"151\":1,\"153\":1,\"155\":1,\"157\":2,\"159\":1,\"168\":2,\"172\":2,\"177\":1,\"185\":1,\"188\":1,\"202\":1,\"212\":3,\"214\":1}}],[\"no\",{\"1\":{\"5\":1,\"40\":1,\"42\":3,\"70\":1,\"71\":1,\"72\":1,\"73\":1,\"74\":1,\"102\":1}}],[\"now\",{\"1\":{\"1\":1,\"141\":1,\"206\":1,\"211\":1}}],[\"nested\",{\"1\":{\"204\":2}}],[\"network\",{\"1\":{\"184\":1}}],[\"next\",{\"0\":{\"88\":1},\"1\":{\"87\":1,\"88\":2,\"173\":1}}],[\"need\",{\"1\":{\"9\":2,\"11\":2,\"17\":2,\"33\":1,\"35\":1,\"37\":1,\"40\":1,\"141\":3,\"142\":1,\"155\":1,\"157\":1,\"159\":1,\"173\":1,\"177\":1,\"184\":1,\"196\":1,\"201\":1,\"202\":1,\"203\":2,\"206\":1}}],[\"necessary\",{\"1\":{\"1\":1,\"9\":1}}],[\"new\",{\"1\":{\"1\":1,\"41\":2,\"48\":1,\"49\":2,\"60\":1,\"161\":1,\"164\":1,\"166\":1,\"168\":1,\"172\":2,\"177\":1,\"184\":1,\"202\":1,\"212\":1}}],[\"tuple\",{\"0\":{\"192\":1},\"1\":{\"159\":1,\"192\":5,\"193\":2}}],[\"typing\",{\"1\":{\"43\":1,\"44\":1,\"45\":1,\"46\":1,\"172\":1,\"177\":1,\"180\":1,\"182\":1,\"184\":1,\"185\":1,\"188\":1,\"190\":1,\"194\":1,\"197\":1,\"198\":1,\"202\":1,\"203\":1,\"204\":1,\"205\":1,\"206\":1,\"211\":1,\"212\":1}}],[\"typically\",{\"1\":{\"42\":1}}],[\"type\",{\"0\":{\"10\":1,\"196\":1,\"197\":1,\"198\":1,\"208\":1,\"209\":1,\"211\":1,\"212\":1},\"1\":{\"13\":1,\"17\":2,\"19\":1,\"20\":2,\"101\":2,\"102\":1,\"104\":1,\"172\":1,\"195\":1,\"197\":3,\"198\":2,\"199\":3,\"201\":7,\"202\":4,\"203\":3,\"204\":5,\"205\":1,\"206\":1,\"208\":5,\"209\":2,\"211\":3,\"212\":2}}],[\"types\",{\"0\":{\"199\":1,\"201\":1,\"206\":1,\"207\":1,\"213\":1,\"220\":1},\"1\":{\"4\":1,\"14\":1,\"17\":1,\"18\":1,\"20\":1,\"127\":1,\"129\":1,\"131\":1,\"134\":1,\"136\":1,\"138\":1,\"172\":1,\"196\":2,\"197\":1,\"198\":2,\"199\":1,\"200\":1,\"201\":2,\"202\":2,\"203\":1,\"204\":1,\"205\":2,\"206\":4,\"208\":2,\"209\":2,\"211\":3}}],[\"trying\",{\"1\":{\"202\":1}}],[\"try\",{\"1\":{\"182\":1,\"190\":1}}],[\"traditional\",{\"1\":{\"159\":1}}],[\"transmitted\",{\"1\":{\"42\":1}}],[\"transactionclosederror\",{\"0\":{\"118\":1}}],[\"transactioncommiterror\",{\"0\":{\"114\":1}}],[\"transactionexecuteerror\",{\"0\":{\"117\":1}}],[\"transactionrollbackerror\",{\"0\":{\"115\":1}}],[\"transactionbeginerror\",{\"0\":{\"113\":1}}],[\"transactionsavepointerror\",{\"0\":{\"116\":1}}],[\"transactions\",{\"1\":{\"40\":1,\"139\":1}}],[\"transaction\",{\"0\":{\"38\":1,\"139\":1,\"140\":1,\"141\":1,\"142\":1,\"143\":1},\"1\":{\"22\":3,\"33\":1,\"35\":1,\"38\":1,\"39\":5,\"52\":1,\"81\":1,\"83\":3,\"97\":1,\"112\":1,\"113\":1,\"114\":1,\"115\":1,\"116\":1,\"117\":1,\"139\":2,\"140\":2,\"141\":11,\"142\":4,\"144\":2,\"145\":2,\"147\":4,\"149\":3,\"151\":3,\"153\":3,\"155\":3,\"157\":3,\"159\":3,\"161\":3,\"162\":3,\"164\":5,\"166\":4,\"168\":4,\"170\":3,\"172\":1,\"173\":1,\"177\":1}}],[\"true\",{\"1\":{\"77\":1}}],[\"tried\",{\"1\":{\"42\":4,\"70\":1,\"71\":1}}],[\"tries\",{\"1\":{\"42\":1}}],[\"tcp\",{\"0\":{\"74\":1},\"1\":{\"42\":7,\"74\":2,\"77\":1,\"79\":2,\"80\":1}}],[\"title\",{\"1\":{\"203\":3}}],[\"tip\",{\"1\":{\"56\":1,\"142\":1}}],[\"tips\",{\"1\":{\"40\":1,\"177\":1,\"194\":1}}],[\"timedelta\",{\"1\":{\"208\":1}}],[\"timearray\",{\"1\":{\"199\":1}}],[\"timeout=10\",{\"1\":{\"42\":1}}],[\"timeout\",{\"0\":{\"73\":1,\"74\":1},\"1\":{\"42\":10,\"73\":2,\"74\":2}}],[\"time\",{\"1\":{\"8\":2,\"41\":1,\"42\":3,\"52\":1,\"78\":1,\"79\":1,\"159\":1,\"199\":1,\"208\":2}}],[\"timestamptz\",{\"1\":{\"199\":1,\"208\":1}}],[\"timestamp\",{\"1\":{\"199\":1,\"208\":1}}],[\"times\",{\"1\":{\"1\":1,\"5\":1,\"70\":1,\"71\":1,\"72\":1,\"172\":1}}],[\"take\",{\"1\":{\"184\":1,\"185\":2}}],[\"takes\",{\"1\":{\"8\":1}}],[\"target\",{\"0\":{\"75\":1},\"1\":{\"42\":4,\"194\":1}}],[\"table\",{\"1\":{\"20\":4,\"29\":2,\"149\":2,\"177\":1,\"192\":1,\"193\":1,\"195\":1,\"197\":1,\"198\":1,\"202\":2,\"203\":1,\"204\":1,\"205\":1,\"206\":1,\"210\":1,\"211\":4,\"212\":2}}],[\"terms\",{\"1\":{\"141\":1}}],[\"tells\",{\"1\":{\"17\":1}}],[\"telegram\",{\"1\":{\"3\":1,\"174\":1}}],[\"textarray\",{\"1\":{\"17\":1,\"18\":2,\"199\":1,\"200\":2}}],[\"text\",{\"1\":{\"17\":1,\"199\":1,\"201\":2,\"203\":3,\"208\":2}}],[\"testing\",{\"0\":{\"11\":1},\"1\":{\"11\":1}}],[\"test\",{\"1\":{\"8\":1,\"11\":2,\"197\":2,\"198\":2,\"210\":1}}],[\"tests\",{\"1\":{\"8\":1,\"11\":2}}],[\"t\",{\"0\":{\"13\":1,\"15\":1},\"1\":{\"1\":1,\"4\":2,\"11\":1,\"33\":1,\"40\":1,\"41\":2,\"58\":1,\"102\":1,\"141\":1,\"172\":2,\"184\":3,\"185\":2,\"188\":1,\"197\":2,\"198\":2,\"202\":1,\"203\":1,\"204\":1,\"208\":2}}],[\"too\",{\"1\":{\"141\":1}}],[\"together\",{\"1\":{\"8\":1}}],[\"tolerance\",{\"1\":{\"1\":1}}],[\"to\",{\"0\":{\"2\":1,\"40\":1,\"177\":1},\"1\":{\"1\":3,\"4\":3,\"5\":1,\"8\":2,\"9\":3,\"10\":1,\"11\":5,\"13\":2,\"17\":3,\"19\":1,\"23\":1,\"33\":1,\"35\":1,\"37\":1,\"38\":1,\"40\":3,\"41\":3,\"42\":16,\"43\":2,\"50\":1,\"52\":1,\"56\":2,\"57\":1,\"58\":1,\"63\":1,\"66\":1,\"70\":2,\"71\":1,\"72\":1,\"73\":4,\"74\":2,\"75\":3,\"76\":1,\"77\":1,\"78\":1,\"84\":1,\"87\":1,\"97\":1,\"101\":2,\"102\":2,\"103\":1,\"104\":1,\"124\":1,\"141\":5,\"142\":2,\"153\":1,\"155\":1,\"157\":1,\"159\":5,\"164\":1,\"171\":1,\"172\":3,\"173\":2,\"176\":1,\"177\":3,\"179\":2,\"181\":2,\"184\":2,\"185\":1,\"187\":2,\"189\":2,\"194\":1,\"195\":3,\"196\":4,\"197\":1,\"198\":2,\"201\":5,\"202\":7,\"203\":3,\"204\":5,\"206\":2,\"208\":1,\"209\":1}}],[\"that\",{\"1\":{\"8\":1,\"17\":1,\"20\":2,\"29\":1,\"38\":1,\"42\":4,\"73\":1,\"80\":1,\"101\":1,\"124\":1,\"141\":1,\"149\":1,\"172\":3,\"177\":1,\"194\":1,\"197\":1,\"198\":1,\"204\":1}}],[\"than\",{\"1\":{\"1\":1,\"75\":1,\"202\":1}}],[\"they\",{\"1\":{\"97\":1}}],[\"them\",{\"1\":{\"22\":1,\"97\":1,\"170\":1,\"177\":1,\"206\":1}}],[\"then\",{\"1\":{\"9\":1,\"42\":1,\"142\":1}}],[\"there\",{\"1\":{\"4\":1,\"5\":1,\"8\":1,\"33\":1,\"40\":1,\"41\":1,\"43\":1,\"56\":1,\"70\":1,\"71\":1,\"72\":1,\"84\":1,\"102\":1,\"124\":1,\"139\":1,\"142\":1,\"172\":2,\"177\":1,\"179\":1,\"181\":1,\"183\":1,\"187\":1,\"189\":1,\"198\":1}}],[\"these\",{\"1\":{\"4\":1,\"141\":1,\"202\":2}}],[\"the\",{\"0\":{\"177\":1},\"1\":{\"1\":2,\"3\":1,\"4\":8,\"5\":1,\"8\":2,\"9\":2,\"13\":1,\"20\":3,\"22\":1,\"23\":1,\"27\":1,\"29\":2,\"31\":3,\"33\":1,\"35\":2,\"37\":1,\"38\":1,\"39\":2,\"40\":2,\"41\":6,\"42\":27,\"43\":1,\"45\":1,\"48\":2,\"49\":1,\"50\":4,\"52\":2,\"54\":3,\"56\":3,\"57\":2,\"65\":1,\"66\":1,\"67\":2,\"68\":1,\"70\":2,\"71\":2,\"72\":3,\"73\":1,\"74\":2,\"75\":4,\"76\":1,\"77\":1,\"78\":3,\"79\":4,\"80\":2,\"81\":1,\"82\":1,\"83\":1,\"86\":1,\"87\":2,\"88\":1,\"90\":1,\"91\":1,\"94\":1,\"96\":1,\"102\":1,\"127\":1,\"129\":1,\"134\":1,\"136\":1,\"140\":2,\"141\":2,\"142\":1,\"147\":1,\"149\":2,\"151\":3,\"153\":2,\"155\":2,\"157\":1,\"159\":8,\"161\":1,\"162\":1,\"164\":2,\"166\":1,\"168\":3,\"171\":3,\"172\":6,\"173\":2,\"174\":1,\"179\":2,\"181\":2,\"182\":1,\"183\":1,\"185\":5,\"187\":2,\"188\":2,\"189\":2,\"196\":1,\"197\":2,\"198\":11,\"201\":2,\"202\":3,\"203\":1,\"204\":2,\"205\":1,\"206\":1,\"208\":1}}],[\"this\",{\"1\":{\"1\":1,\"8\":1,\"9\":1,\"17\":1,\"27\":1,\"29\":1,\"31\":1,\"33\":2,\"37\":1,\"40\":2,\"42\":7,\"48\":1,\"52\":1,\"54\":1,\"56\":1,\"70\":1,\"71\":1,\"72\":1,\"73\":1,\"74\":1,\"75\":1,\"77\":1,\"78\":1,\"79\":2,\"80\":1,\"83\":1,\"101\":1,\"102\":2,\"141\":1,\"147\":1,\"149\":1,\"151\":1,\"157\":1,\"172\":1,\"173\":1,\"184\":2,\"195\":1,\"196\":1,\"198\":1,\"202\":2,\"203\":2}}],[\"two\",{\"1\":{\"1\":1,\"4\":1,\"43\":1,\"124\":1,\"139\":1}}],[\"i16\",{\"1\":{\"201\":1}}],[\"i32\",{\"1\":{\"201\":1}}],[\"i64\",{\"1\":{\"201\":1}}],[\"immediately\",{\"1\":{\"185\":1}}],[\"impossible\",{\"1\":{\"103\":1,\"202\":1}}],[\"import\",{\"1\":{\"14\":2,\"16\":1,\"18\":2,\"20\":2,\"39\":1,\"43\":3,\"44\":3,\"45\":2,\"46\":2,\"58\":1,\"83\":1,\"141\":1,\"142\":1,\"159\":2,\"177\":3,\"180\":4,\"182\":5,\"184\":6,\"185\":6,\"188\":5,\"190\":5,\"192\":1,\"193\":2,\"197\":3,\"198\":3,\"200\":2,\"202\":3,\"203\":3,\"204\":3,\"205\":3,\"206\":3,\"211\":3,\"212\":3}}],[\"important\",{\"0\":{\"173\":1},\"1\":{\"4\":1,\"41\":1,\"42\":1,\"142\":1,\"172\":1,\"197\":1,\"198\":1,\"201\":1,\"202\":1,\"208\":1}}],[\"improve\",{\"1\":{\"5\":1,\"159\":1}}],[\"ignored\",{\"1\":{\"42\":6,\"74\":1,\"77\":1,\"78\":1,\"79\":1,\"80\":1}}],[\"ignore=\",{\"1\":{\"11\":1}}],[\"ipv6address\",{\"1\":{\"208\":1}}],[\"ipv4address\",{\"1\":{\"208\":1}}],[\"ipaddressarray\",{\"1\":{\"199\":1}}],[\"ips\",{\"1\":{\"42\":1}}],[\"ip\",{\"1\":{\"42\":2,\"73\":1}}],[\"idea\",{\"1\":{\"185\":1}}],[\"idle\",{\"0\":{\"78\":1},\"1\":{\"42\":3,\"78\":1,\"184\":1}}],[\"id\",{\"1\":{\"16\":2,\"27\":1,\"31\":1,\"35\":1,\"37\":1,\"52\":1,\"54\":1,\"134\":1,\"136\":1,\"141\":1,\"142\":1,\"147\":1,\"151\":1,\"155\":1,\"157\":1,\"159\":2,\"177\":2,\"193\":1,\"195\":1}}],[\"if\",{\"1\":{\"4\":1,\"5\":2,\"8\":1,\"11\":2,\"29\":1,\"37\":1,\"40\":1,\"41\":1,\"42\":4,\"74\":1,\"78\":1,\"79\":1,\"80\":1,\"101\":2,\"102\":2,\"103\":1,\"104\":1,\"111\":1,\"118\":1,\"123\":1,\"141\":1,\"142\":2,\"149\":1,\"153\":1,\"157\":1,\"172\":1,\"173\":1,\"180\":1,\"182\":2,\"184\":2,\"185\":2,\"188\":4,\"190\":1,\"197\":2,\"198\":2,\"202\":1,\"203\":1,\"204\":2,\"208\":1}}],[\"iteration\",{\"1\":{\"83\":1}}],[\"iterator\",{\"0\":{\"83\":1},\"1\":{\"82\":1,\"83\":1}}],[\"itself\",{\"1\":{\"1\":1,\"22\":1,\"170\":1}}],[\"it\",{\"1\":{\"1\":3,\"8\":1,\"9\":2,\"10\":1,\"11\":1,\"13\":1,\"22\":1,\"23\":1,\"39\":4,\"40\":1,\"41\":3,\"42\":2,\"50\":1,\"52\":1,\"58\":1,\"72\":1,\"74\":2,\"81\":1,\"82\":1,\"87\":1,\"92\":2,\"93\":2,\"95\":2,\"101\":3,\"102\":1,\"103\":1,\"140\":3,\"141\":2,\"142\":1,\"159\":1,\"171\":1,\"172\":2,\"173\":2,\"177\":2,\"182\":2,\"184\":2,\"185\":4,\"188\":3,\"197\":3,\"198\":1,\"201\":1,\"202\":2,\"203\":1,\"204\":2,\"205\":1,\"206\":1,\"211\":2,\"212\":2}}],[\"index\",{\"1\":{\"202\":2}}],[\"independent\",{\"1\":{\"159\":1}}],[\"inability\",{\"1\":{\"201\":1}}],[\"inactivity\",{\"1\":{\"42\":1}}],[\"inet\",{\"1\":{\"199\":1,\"208\":2}}],[\"inner\",{\"1\":{\"195\":2}}],[\"information\",{\"1\":{\"208\":1}}],[\"info\",{\"1\":{\"172\":1,\"204\":4,\"206\":2,\"211\":3}}],[\"init\",{\"1\":{\"129\":1,\"136\":1}}],[\"initialize\",{\"0\":{\"43\":1,\"44\":1},\"1\":{\"142\":1,\"180\":1}}],[\"initializes\",{\"1\":{\"41\":1,\"171\":1}}],[\"initializing\",{\"1\":{\"29\":1,\"149\":1}}],[\"initialization\",{\"1\":{\"22\":1,\"58\":1,\"87\":1}}],[\"incorrect\",{\"1\":{\"14\":1,\"16\":1,\"18\":1,\"20\":1}}],[\"introduction\",{\"0\":{\"216\":1}}],[\"int8\",{\"1\":{\"199\":1}}],[\"int64array\",{\"1\":{\"199\":1}}],[\"int4\",{\"1\":{\"199\":1}}],[\"int32array\",{\"1\":{\"199\":1}}],[\"int2\",{\"1\":{\"199\":1}}],[\"int16array\",{\"1\":{\"199\":1}}],[\"interpreted\",{\"1\":{\"70\":1}}],[\"intervalarray\",{\"1\":{\"199\":1}}],[\"interval\",{\"0\":{\"79\":1},\"1\":{\"42\":4,\"79\":2,\"199\":1,\"208\":1}}],[\"internally\",{\"1\":{\"33\":1}}],[\"interaction\",{\"1\":{\"1\":1,\"172\":1}}],[\"intended\",{\"1\":{\"29\":1,\"149\":1}}],[\"integer\",{\"0\":{\"202\":1},\"1\":{\"13\":1,\"201\":2,\"202\":5,\"208\":3,\"211\":1}}],[\"into\",{\"0\":{\"197\":1},\"1\":{\"13\":1,\"20\":2,\"33\":1,\"97\":1,\"103\":1,\"141\":1,\"142\":1,\"153\":1,\"159\":1,\"184\":1,\"196\":1,\"197\":4,\"202\":1,\"203\":3,\"204\":2,\"205\":1,\"206\":1,\"211\":1,\"212\":2}}],[\"int\",{\"1\":{\"13\":1,\"37\":1,\"157\":1,\"193\":1,\"195\":1,\"208\":5}}],[\"insani7y\",{\"1\":{\"177\":1}}],[\"inside\",{\"1\":{\"124\":1}}],[\"inserted\",{\"1\":{\"141\":1}}],[\"insert\",{\"0\":{\"19\":1},\"1\":{\"19\":1,\"20\":2,\"33\":1,\"141\":1,\"142\":1,\"153\":1,\"159\":1,\"197\":2,\"202\":3,\"203\":2,\"204\":2,\"205\":1,\"206\":1,\"211\":2,\"212\":4}}],[\"instance\",{\"1\":{\"136\":1,\"182\":1,\"194\":1}}],[\"instances\",{\"1\":{\"129\":1}}],[\"installation\",{\"0\":{\"176\":1},\"1\":{\"10\":1,\"176\":1,\"208\":1}}],[\"installed\",{\"1\":{\"9\":1}}],[\"install\",{\"0\":{\"2\":1},\"1\":{\"9\":3,\"10\":2,\"176\":1,\"201\":1}}],[\"instead\",{\"1\":{\"15\":1,\"17\":1,\"192\":1,\"208\":1}}],[\"inspired\",{\"1\":{\"1\":1,\"172\":1}}],[\"in\",{\"0\":{\"15\":1},\"1\":{\"1\":1,\"3\":1,\"4\":3,\"5\":1,\"8\":2,\"9\":2,\"11\":2,\"15\":1,\"16\":1,\"22\":1,\"27\":1,\"33\":1,\"39\":4,\"40\":1,\"41\":1,\"42\":9,\"50\":1,\"52\":1,\"55\":1,\"70\":1,\"71\":1,\"72\":2,\"75\":1,\"81\":1,\"82\":3,\"83\":3,\"94\":1,\"96\":1,\"106\":1,\"107\":1,\"108\":1,\"110\":1,\"113\":1,\"114\":1,\"115\":1,\"116\":1,\"117\":1,\"120\":1,\"121\":1,\"122\":1,\"140\":3,\"141\":1,\"142\":1,\"159\":5,\"168\":3,\"170\":2,\"171\":1,\"172\":5,\"173\":2,\"174\":1,\"177\":1,\"182\":2,\"185\":2,\"188\":1,\"194\":1,\"195\":1,\"196\":2,\"197\":1,\"198\":3,\"201\":1,\"202\":1,\"203\":1,\"204\":2,\"205\":1,\"206\":2,\"208\":1,\"211\":1,\"212\":1}}],[\"isinstance\",{\"1\":{\"192\":1,\"193\":1,\"195\":1}}],[\"isolationlevel\",{\"1\":{\"39\":1}}],[\"isolation\",{\"1\":{\"39\":3,\"140\":2}}],[\"isolated\",{\"1\":{\"4\":1}}],[\"isn\",{\"0\":{\"13\":1,\"15\":1},\"1\":{\"208\":2}}],[\"issue\",{\"1\":{\"8\":1}}],[\"is\",{\"0\":{\"1\":1,\"172\":1},\"1\":{\"1\":1,\"4\":2,\"5\":1,\"8\":1,\"9\":3,\"13\":1,\"29\":1,\"31\":1,\"33\":2,\"38\":1,\"39\":4,\"40\":1,\"41\":2,\"42\":14,\"43\":1,\"44\":1,\"46\":3,\"54\":1,\"56\":2,\"62\":2,\"70\":1,\"72\":2,\"74\":3,\"77\":1,\"78\":3,\"79\":2,\"80\":2,\"82\":2,\"83\":1,\"101\":1,\"102\":1,\"111\":1,\"118\":1,\"123\":1,\"140\":3,\"141\":1,\"142\":3,\"149\":1,\"151\":1,\"153\":1,\"159\":1,\"168\":2,\"171\":1,\"172\":2,\"177\":3,\"179\":1,\"181\":1,\"183\":1,\"184\":1,\"185\":1,\"187\":1,\"189\":1,\"202\":2,\"212\":2}}],[\"won\",{\"1\":{\"40\":1,\"141\":1,\"172\":1,\"184\":1}}],[\"worry\",{\"1\":{\"33\":1}}],[\"workflow\",{\"1\":{\"159\":1}}],[\"work\",{\"1\":{\"23\":1,\"56\":1,\"84\":1,\"139\":1,\"196\":1,\"202\":1,\"203\":1}}],[\"working\",{\"0\":{\"13\":1,\"15\":1},\"1\":{\"172\":1}}],[\"wrap\",{\"1\":{\"204\":1}}],[\"wrappers\",{\"1\":{\"202\":1}}],[\"writing\",{\"1\":{\"172\":1}}],[\"write\",{\"1\":{\"42\":2}}],[\"written\",{\"1\":{\"1\":1,\"172\":1}}],[\"wrong\",{\"0\":{\"17\":1},\"1\":{\"17\":1,\"197\":1}}],[\"waiting\",{\"1\":{\"50\":2,\"159\":1}}],[\"warning\",{\"1\":{\"35\":1,\"37\":1,\"141\":1,\"155\":1,\"157\":1}}],[\"ways\",{\"1\":{\"9\":1,\"43\":1,\"139\":1}}],[\"way\",{\"1\":{\"9\":1,\"44\":1,\"52\":1,\"56\":1,\"58\":1,\"141\":1,\"177\":1,\"179\":1,\"181\":1,\"187\":1,\"189\":1,\"194\":1,\"196\":1}}],[\"want\",{\"1\":{\"8\":1,\"11\":1,\"17\":1,\"153\":1,\"194\":2,\"197\":1,\"198\":1,\"202\":1,\"204\":2}}],[\"was\",{\"1\":{\"1\":1,\"172\":1}}],[\"wise\",{\"1\":{\"196\":1}}],[\"wisely\",{\"1\":{\"52\":1}}],[\"windows\",{\"1\":{\"79\":1}}],[\"will\",{\"1\":{\"5\":1,\"29\":1,\"35\":1,\"37\":2,\"41\":1,\"42\":7,\"70\":1,\"71\":1,\"73\":1,\"74\":1,\"80\":1,\"87\":1,\"141\":1,\"142\":1,\"149\":1,\"155\":1,\"157\":2,\"159\":1,\"172\":3,\"173\":1,\"185\":2,\"195\":1,\"197\":2,\"204\":1,\"211\":3,\"212\":1}}],[\"within\",{\"1\":{\"23\":1}}],[\"without\",{\"1\":{\"10\":1,\"203\":1}}],[\"with\",{\"0\":{\"43\":1,\"44\":1,\"45\":1,\"142\":1},\"1\":{\"1\":1,\"4\":3,\"8\":1,\"10\":1,\"11\":3,\"17\":1,\"20\":1,\"23\":2,\"27\":1,\"33\":1,\"42\":7,\"46\":1,\"52\":2,\"55\":1,\"56\":1,\"58\":1,\"70\":1,\"83\":2,\"84\":1,\"87\":1,\"102\":1,\"124\":3,\"139\":1,\"141\":1,\"142\":2,\"147\":2,\"149\":1,\"151\":1,\"153\":2,\"155\":1,\"157\":1,\"168\":1,\"172\":4,\"173\":1,\"176\":1,\"177\":1,\"179\":1,\"181\":1,\"184\":1,\"185\":1,\"187\":1,\"189\":1,\"194\":1,\"195\":1,\"196\":1,\"198\":1,\"201\":1,\"203\":1,\"204\":2,\"205\":1,\"206\":1,\"209\":1,\"212\":1}}],[\"which\",{\"1\":{\"40\":1,\"42\":2,\"72\":2,\"159\":1,\"168\":1,\"172\":1,\"185\":1,\"194\":1,\"195\":1,\"196\":1,\"198\":1}}],[\"while\",{\"1\":{\"4\":1}}],[\"when\",{\"1\":{\"13\":1,\"17\":1,\"22\":1,\"29\":1,\"42\":4,\"102\":1,\"149\":1,\"170\":1,\"177\":1,\"184\":1,\"194\":1,\"198\":1,\"202\":1,\"203\":1,\"204\":1}}],[\"where\",{\"0\":{\"15\":1},\"1\":{\"4\":1,\"15\":2,\"16\":2,\"17\":1,\"18\":2,\"27\":1,\"31\":1,\"35\":1,\"37\":1,\"42\":1,\"52\":1,\"54\":1,\"74\":1,\"83\":1,\"134\":1,\"136\":1,\"147\":1,\"151\":1,\"155\":1,\"157\":1,\"159\":2,\"168\":1,\"177\":1,\"200\":1}}],[\"whole\",{\"1\":{\"162\":1}}],[\"who\",{\"1\":{\"8\":1,\"22\":1,\"200\":1}}],[\"what\",{\"0\":{\"1\":1,\"172\":1},\"1\":{\"142\":1,\"177\":1,\"202\":1,\"211\":1}}],[\"weather\",{\"1\":{\"212\":10}}],[\"web\",{\"1\":{\"4\":1,\"180\":8}}],[\"we\",{\"1\":{\"4\":5,\"8\":2,\"10\":2,\"11\":1,\"17\":2,\"20\":2,\"22\":1,\"83\":1,\"97\":1,\"139\":1,\"141\":4,\"170\":1,\"172\":2,\"177\":1,\"179\":1,\"181\":1,\"187\":1,\"189\":1,\"191\":1,\"195\":1,\"196\":1,\"197\":3,\"198\":2,\"199\":1,\"202\":2,\"203\":1,\"204\":1,\"205\":1,\"206\":1,\"209\":1,\"211\":2,\"212\":2}}],[\"f64\",{\"1\":{\"201\":1}}],[\"f32\",{\"1\":{\"201\":1}}],[\"float\",{\"1\":{\"208\":3}}],[\"float64\",{\"0\":{\"202\":1},\"1\":{\"201\":1,\"202\":2,\"208\":1}}],[\"float64array\",{\"1\":{\"199\":1}}],[\"float32\",{\"0\":{\"202\":1},\"1\":{\"201\":1,\"202\":2,\"208\":1}}],[\"float32array\",{\"1\":{\"199\":1}}],[\"float8\",{\"1\":{\"199\":1,\"201\":1,\"202\":1,\"208\":2}}],[\"float4\",{\"1\":{\"199\":1,\"201\":1,\"202\":1,\"208\":1}}],[\"func\",{\"1\":{\"185\":2}}],[\"function\",{\"0\":{\"45\":1},\"1\":{\"45\":1,\"194\":2,\"195\":2,\"198\":1}}],[\"future\",{\"1\":{\"182\":1,\"188\":1,\"190\":1}}],[\"full\",{\"1\":{\"42\":1,\"159\":1}}],[\"fully\",{\"0\":{\"141\":1},\"1\":{\"1\":1,\"172\":1}}],[\"found\",{\"1\":{\"214\":1}}],[\"foo\",{\"1\":{\"18\":2}}],[\"following\",{\"1\":{\"179\":1,\"181\":1,\"187\":1,\"189\":1}}],[\"follow\",{\"1\":{\"9\":1}}],[\"forward\",{\"0\":{\"94\":1},\"1\":{\"94\":2}}],[\"forcibly\",{\"1\":{\"42\":1}}],[\"for\",{\"1\":{\"1\":1,\"4\":3,\"8\":3,\"11\":1,\"17\":1,\"22\":2,\"27\":1,\"29\":2,\"31\":2,\"33\":1,\"35\":1,\"37\":1,\"39\":1,\"41\":1,\"42\":6,\"48\":1,\"52\":1,\"54\":2,\"55\":1,\"64\":1,\"65\":1,\"69\":1,\"72\":1,\"74\":1,\"77\":1,\"78\":1,\"79\":1,\"80\":1,\"82\":2,\"83\":1,\"97\":2,\"100\":1,\"102\":1,\"105\":1,\"106\":1,\"109\":1,\"112\":1,\"119\":1,\"124\":2,\"127\":1,\"129\":1,\"131\":1,\"134\":1,\"136\":1,\"138\":1,\"147\":1,\"149\":2,\"151\":2,\"153\":2,\"155\":1,\"157\":1,\"159\":1,\"168\":2,\"172\":2,\"179\":1,\"181\":1,\"183\":1,\"184\":1,\"185\":1,\"187\":1,\"189\":1,\"191\":1,\"196\":1,\"197\":4,\"198\":4,\"199\":1,\"202\":1,\"204\":5,\"206\":1,\"208\":1,\"209\":1}}],[\"finish\",{\"1\":{\"159\":1}}],[\"fine\",{\"1\":{\"141\":1}}],[\"finally\",{\"1\":{\"190\":1}}],[\"final\",{\"1\":{\"43\":2,\"44\":2,\"45\":2,\"46\":1,\"141\":1,\"142\":1,\"177\":4,\"197\":2,\"198\":2,\"202\":2,\"203\":2,\"204\":2,\"205\":2,\"206\":2,\"211\":2,\"212\":2}}],[\"findings\",{\"0\":{\"5\":1}}],[\"find\",{\"1\":{\"4\":1,\"9\":1,\"12\":1,\"208\":1}}],[\"field\",{\"1\":{\"20\":1,\"79\":1,\"198\":2,\"204\":7}}],[\"file\",{\"0\":{\"69\":1},\"1\":{\"11\":2,\"42\":2,\"69\":1,\"190\":1}}],[\"first\",{\"0\":{\"90\":1,\"177\":1},\"1\":{\"8\":1,\"9\":1,\"35\":1,\"43\":1,\"90\":2,\"141\":3,\"155\":1,\"177\":1}}],[\"feature\",{\"1\":{\"178\":1,\"186\":1,\"213\":1}}],[\"fetched\",{\"1\":{\"83\":2,\"168\":2}}],[\"fetch\",{\"0\":{\"30\":1,\"34\":1,\"36\":1,\"53\":1,\"87\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":1,\"95\":1,\"96\":1,\"150\":1,\"154\":1,\"156\":1},\"1\":{\"31\":1,\"35\":2,\"37\":1,\"54\":1,\"82\":3,\"83\":2,\"87\":6,\"88\":2,\"89\":2,\"90\":2,\"91\":2,\"92\":2,\"93\":2,\"94\":2,\"95\":1,\"96\":2,\"122\":2,\"134\":1,\"136\":1,\"151\":1,\"155\":2,\"157\":1,\"168\":3}}],[\"feel\",{\"1\":{\"8\":1}}],[\"fellas\",{\"1\":{\"8\":1}}],[\"front\",{\"1\":{\"159\":1}}],[\"from\",{\"0\":{\"198\":1},\"1\":{\"3\":1,\"4\":1,\"8\":1,\"14\":4,\"16\":3,\"18\":4,\"20\":3,\"22\":5,\"27\":2,\"31\":1,\"35\":2,\"37\":1,\"39\":1,\"40\":1,\"42\":1,\"43\":2,\"44\":2,\"45\":2,\"46\":2,\"50\":1,\"52\":3,\"54\":1,\"56\":1,\"58\":2,\"60\":1,\"81\":1,\"83\":2,\"87\":2,\"88\":1,\"127\":1,\"129\":2,\"134\":1,\"136\":2,\"141\":2,\"142\":1,\"147\":2,\"151\":1,\"155\":2,\"157\":1,\"159\":4,\"168\":2,\"170\":4,\"174\":1,\"176\":1,\"177\":4,\"180\":4,\"182\":5,\"184\":7,\"185\":8,\"188\":5,\"190\":5,\"192\":2,\"193\":4,\"194\":2,\"195\":2,\"197\":4,\"198\":8,\"200\":3,\"201\":2,\"202\":4,\"203\":4,\"204\":3,\"205\":3,\"206\":3,\"211\":4,\"212\":4}}],[\"frequently\",{\"0\":{\"12\":1}}],[\"frustrated\",{\"1\":{\"8\":1}}],[\"frameworks\",{\"0\":{\"218\":1}}],[\"framework\",{\"0\":{\"186\":1},\"1\":{\"4\":1,\"179\":2,\"181\":2,\"183\":1,\"187\":2,\"189\":2}}],[\"factories\",{\"0\":{\"191\":1,\"194\":1,\"219\":1},\"1\":{\"191\":1,\"192\":1,\"193\":1}}],[\"factory=to\",{\"1\":{\"195\":1}}],[\"factory=tuple\",{\"1\":{\"192\":1}}],[\"factory=class\",{\"1\":{\"193\":1}}],[\"factory\",{\"0\":{\"130\":1,\"137\":1},\"1\":{\"131\":1,\"138\":1,\"192\":1,\"193\":1,\"194\":3,\"195\":1}}],[\"fail\",{\"1\":{\"142\":1}}],[\"fault\",{\"1\":{\"1\":1}}],[\"fastapi\",{\"0\":{\"183\":1},\"1\":{\"183\":1,\"184\":5,\"185\":5}}],[\"faster\",{\"1\":{\"1\":1,\"172\":1}}],[\"fast\",{\"1\":{\"1\":1,\"191\":1}}],[\"datetime\",{\"1\":{\"208\":7}}],[\"datetimetzarray\",{\"1\":{\"199\":1}}],[\"datetimearray\",{\"1\":{\"199\":1}}],[\"date\",{\"1\":{\"199\":1,\"208\":2}}],[\"datearray\",{\"1\":{\"199\":1}}],[\"dataclass\",{\"1\":{\"193\":2,\"195\":1}}],[\"dataclasses\",{\"1\":{\"193\":1}}],[\"data=dict\",{\"1\":{\"180\":1}}],[\"data\",{\"0\":{\"17\":1},\"1\":{\"17\":2,\"42\":1,\"101\":1,\"124\":1,\"159\":2,\"170\":1,\"198\":2,\"202\":1,\"204\":1,\"211\":1,\"212\":2}}],[\"database\",{\"0\":{\"6\":1,\"7\":1,\"177\":1},\"1\":{\"1\":1,\"4\":8,\"5\":2,\"22\":5,\"23\":1,\"29\":1,\"42\":1,\"43\":1,\"58\":1,\"65\":1,\"75\":1,\"101\":1,\"149\":1,\"170\":3,\"172\":1,\"177\":1,\"180\":2,\"182\":2,\"184\":2,\"185\":1,\"188\":1,\"193\":1,\"194\":1,\"195\":1,\"197\":3,\"198\":3,\"202\":4,\"203\":3,\"204\":3,\"205\":3,\"206\":3}}],[\"due\",{\"1\":{\"196\":1,\"201\":1}}],[\"dns\",{\"1\":{\"42\":1}}],[\"dsn=\",{\"1\":{\"44\":1,\"45\":1,\"46\":1,\"141\":1,\"142\":1,\"180\":1,\"182\":1,\"184\":1,\"185\":1,\"188\":1,\"190\":1}}],[\"dsns\",{\"1\":{\"42\":1}}],[\"dsn\",{\"0\":{\"44\":1},\"1\":{\"42\":3,\"44\":1}}],[\"db\",{\"1\":{\"27\":1,\"29\":1,\"31\":1,\"33\":1,\"35\":1,\"37\":1,\"39\":1,\"40\":1,\"41\":1,\"42\":3,\"43\":3,\"44\":2,\"45\":2,\"46\":3,\"49\":1,\"52\":1,\"54\":1,\"55\":1,\"56\":1,\"57\":1,\"83\":2,\"127\":2,\"129\":2,\"134\":3,\"136\":2,\"141\":3,\"142\":3,\"147\":1,\"149\":1,\"151\":1,\"153\":1,\"155\":1,\"157\":1,\"159\":3,\"166\":1,\"177\":3,\"180\":13,\"182\":7,\"184\":10,\"185\":8,\"188\":16,\"190\":4,\"197\":3,\"198\":3,\"202\":3,\"203\":4,\"204\":4,\"205\":3,\"206\":3,\"211\":2,\"212\":4}}],[\"dbname\",{\"0\":{\"65\":1},\"1\":{\"11\":2,\"58\":1}}],[\"device\",{\"1\":{\"205\":4}}],[\"devices\",{\"1\":{\"205\":2}}],[\"dev\",{\"1\":{\"200\":1}}],[\"developers\",{\"1\":{\"196\":1}}],[\"development\",{\"1\":{\"170\":1}}],[\"develop\",{\"1\":{\"9\":1}}],[\"deal\",{\"1\":{\"198\":1}}],[\"demonstration\",{\"1\":{\"197\":1,\"198\":1}}],[\"demand\",{\"1\":{\"41\":1}}],[\"depends\",{\"1\":{\"184\":2,\"185\":2}}],[\"dependency\",{\"0\":{\"98\":1}}],[\"details\",{\"1\":{\"178\":1,\"186\":1,\"213\":1}}],[\"determine\",{\"1\":{\"20\":1}}],[\"decimal\",{\"1\":{\"208\":3}}],[\"decoder\",{\"1\":{\"198\":2}}],[\"decoders=\",{\"1\":{\"198\":1}}],[\"decoders\",{\"1\":{\"127\":2,\"129\":2,\"131\":2,\"134\":2,\"136\":2,\"138\":2,\"198\":2}}],[\"decode\",{\"0\":{\"198\":1},\"1\":{\"196\":1,\"198\":2}}],[\"declare\",{\"1\":{\"85\":1,\"120\":1}}],[\"define\",{\"1\":{\"97\":1}}],[\"deferrable=true\",{\"1\":{\"39\":1}}],[\"deferrable\",{\"1\":{\"39\":2,\"140\":2}}],[\"def\",{\"1\":{\"14\":2,\"16\":2,\"18\":2,\"20\":2,\"27\":1,\"29\":1,\"31\":1,\"33\":1,\"35\":1,\"37\":1,\"39\":1,\"40\":1,\"46\":1,\"49\":1,\"52\":1,\"54\":1,\"55\":1,\"56\":1,\"57\":1,\"83\":1,\"85\":1,\"86\":1,\"87\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":1,\"95\":1,\"96\":1,\"127\":1,\"129\":2,\"134\":1,\"136\":2,\"141\":4,\"142\":1,\"144\":1,\"145\":1,\"147\":1,\"149\":1,\"151\":1,\"153\":1,\"155\":1,\"157\":1,\"159\":1,\"161\":1,\"162\":1,\"164\":1,\"166\":1,\"168\":1,\"177\":1,\"180\":3,\"182\":3,\"184\":3,\"185\":3,\"188\":3,\"190\":2,\"192\":1,\"193\":1,\"195\":3,\"197\":1,\"198\":2,\"200\":1,\"202\":1,\"203\":1,\"204\":1,\"205\":1,\"206\":1,\"211\":1,\"212\":1}}],[\"defaults\",{\"1\":{\"42\":4,\"73\":1,\"75\":1,\"76\":1,\"77\":1,\"78\":1}}],[\"default\",{\"1\":{\"11\":1,\"39\":4,\"42\":2,\"72\":1,\"74\":2,\"82\":4,\"140\":3,\"159\":1,\"168\":3,\"173\":1,\"177\":1,\"179\":1,\"181\":1,\"183\":1,\"187\":1,\"189\":1,\"197\":1,\"198\":1,\"202\":1,\"203\":1,\"204\":2,\"205\":1,\"206\":1,\"211\":1,\"212\":1}}],[\"description\",{\"0\":{\"213\":1},\"1\":{\"8\":1,\"203\":5}}],[\"dropping\",{\"1\":{\"42\":1,\"48\":1,\"80\":1}}],[\"draft\",{\"1\":{\"8\":1}}],[\"drivers\",{\"1\":{\"1\":1}}],[\"driver\",{\"1\":{\"1\":1,\"124\":1,\"170\":1,\"172\":1}}],[\"difficult\",{\"1\":{\"196\":1}}],[\"difference\",{\"1\":{\"5\":1,\"58\":1}}],[\"different\",{\"1\":{\"4\":1,\"5\":1,\"97\":2,\"153\":1,\"194\":1,\"204\":1}}],[\"directory\",{\"1\":{\"70\":1}}],[\"directly\",{\"1\":{\"27\":1,\"52\":1,\"147\":1,\"176\":1,\"206\":1,\"212\":1}}],[\"district\",{\"1\":{\"206\":1}}],[\"discard\",{\"1\":{\"141\":1}}],[\"discussions\",{\"1\":{\"8\":1}}],[\"disabled\",{\"1\":{\"78\":1,\"79\":1,\"80\":1}}],[\"disable\",{\"1\":{\"42\":2,\"76\":1,\"173\":1}}],[\"dictionary\",{\"1\":{\"194\":1,\"204\":1}}],[\"dicts\",{\"1\":{\"127\":1,\"204\":1}}],[\"dict\",{\"1\":{\"27\":2,\"31\":2,\"35\":2,\"52\":2,\"54\":2,\"83\":2,\"127\":1,\"134\":2,\"147\":2,\"151\":2,\"155\":2,\"168\":2,\"177\":2,\"180\":1,\"182\":1,\"188\":1,\"190\":1,\"192\":1,\"194\":1,\"195\":2,\"198\":3,\"204\":6,\"208\":3,\"211\":1}}],[\"down\",{\"1\":{\"177\":1}}],[\"docs\",{\"1\":{\"81\":1,\"161\":1,\"162\":1,\"164\":1,\"166\":1,\"168\":1,\"173\":1}}],[\"docstrings\",{\"1\":{\"172\":1}}],[\"docstring\",{\"1\":{\"58\":1}}],[\"documentation\",{\"0\":{\"0\":1},\"1\":{\"9\":1,\"172\":1,\"173\":1}}],[\"domain\",{\"1\":{\"42\":1,\"70\":1,\"74\":1,\"77\":1,\"78\":1,\"79\":1,\"80\":1}}],[\"do\",{\"1\":{\"8\":1,\"9\":1,\"40\":1,\"83\":1,\"168\":1,\"173\":1,\"177\":1,\"203\":1}}],[\"doesn\",{\"1\":{\"4\":1,\"41\":1,\"58\":1,\"188\":1,\"197\":1,\"198\":1}}],[\"don\",{\"1\":{\"1\":1,\"11\":1,\"33\":1,\"102\":1,\"172\":1,\"184\":2,\"185\":2,\"197\":1,\"198\":1,\"203\":1,\"204\":1}}],[\"plus\",{\"1\":{\"212\":4}}],[\"please\",{\"1\":{\"8\":2}}],[\"pgvector\",{\"1\":{\"201\":2,\"208\":3}}],[\"pg\",{\"1\":{\"180\":2,\"182\":1,\"184\":1,\"185\":1,\"188\":2,\"190\":1}}],[\"pgbouncer\",{\"1\":{\"173\":1,\"184\":1,\"185\":1}}],[\"pull\",{\"1\":{\"177\":1}}],[\"pulls\",{\"1\":{\"52\":1,\"177\":1}}],[\"publish\",{\"1\":{\"8\":1}}],[\"perfect\",{\"1\":{\"184\":1}}],[\"performance\",{\"1\":{\"5\":2,\"159\":1,\"199\":1,\"209\":1}}],[\"performed\",{\"1\":{\"4\":1}}],[\"people\",{\"1\":{\"22\":1,\"31\":1,\"54\":1,\"151\":1}}],[\"pymacaddr8\",{\"0\":{\"205\":1},\"1\":{\"205\":3}}],[\"pymacaddr6\",{\"0\":{\"205\":1},\"1\":{\"205\":3}}],[\"pyjsonb\",{\"0\":{\"204\":1},\"1\":{\"204\":4}}],[\"pyjson\",{\"0\":{\"204\":1},\"1\":{\"204\":4}}],[\"pyvarchar\",{\"0\":{\"203\":1},\"1\":{\"203\":1}}],[\"pycustomtype\",{\"1\":{\"197\":5,\"198\":2}}],[\"pydantic\",{\"1\":{\"129\":1,\"136\":1}}],[\"py\",{\"1\":{\"11\":1,\"103\":1}}],[\"pytext\",{\"0\":{\"203\":1},\"1\":{\"203\":4}}],[\"pytest\",{\"1\":{\"11\":3}}],[\"pytorustvaluemappingerror\",{\"0\":{\"102\":1}}],[\"python3\",{\"1\":{\"9\":1}}],[\"python\",{\"1\":{\"1\":1,\"9\":2,\"11\":1,\"13\":1,\"20\":1,\"58\":1,\"101\":1,\"102\":1,\"124\":1,\"129\":1,\"136\":1,\"172\":2,\"196\":1,\"201\":2,\"202\":2,\"203\":2,\"204\":2,\"208\":1,\"212\":1}}],[\"package\",{\"1\":{\"206\":1}}],[\"packet\",{\"1\":{\"78\":1}}],[\"parsed\",{\"1\":{\"198\":1}}],[\"parts\",{\"1\":{\"173\":1,\"185\":1}}],[\"parameter\",{\"1\":{\"27\":1,\"33\":1,\"42\":2,\"52\":1,\"67\":1,\"87\":1,\"92\":1,\"93\":1,\"95\":1,\"147\":1,\"194\":1,\"195\":1,\"198\":2}}],[\"parameters=\",{\"1\":{\"14\":2,\"16\":2,\"18\":2,\"20\":2,\"83\":1,\"147\":1,\"151\":1,\"168\":1,\"200\":1,\"212\":2}}],[\"parameters\",{\"0\":{\"27\":1,\"29\":1,\"31\":1,\"33\":1,\"35\":1,\"37\":1,\"39\":1,\"42\":1,\"43\":1,\"49\":1,\"52\":1,\"54\":1,\"82\":1,\"127\":1,\"129\":1,\"131\":1,\"134\":1,\"136\":1,\"138\":1,\"140\":1,\"147\":1,\"149\":1,\"151\":1,\"153\":1,\"155\":1,\"157\":1,\"159\":1,\"161\":1,\"164\":1,\"166\":1,\"168\":1},\"1\":{\"13\":1,\"27\":3,\"31\":2,\"33\":3,\"35\":2,\"37\":2,\"42\":1,\"43\":1,\"45\":1,\"50\":1,\"52\":4,\"54\":2,\"82\":2,\"102\":2,\"147\":3,\"151\":2,\"153\":3,\"155\":2,\"157\":2,\"168\":2,\"177\":1,\"197\":2,\"198\":1,\"202\":1,\"203\":1,\"204\":1,\"205\":1,\"206\":1,\"211\":1,\"212\":1}}],[\"passed\",{\"1\":{\"20\":1,\"52\":1,\"129\":2,\"136\":2,\"197\":1,\"201\":1,\"202\":1,\"204\":1}}],[\"pass\",{\"0\":{\"197\":1},\"1\":{\"13\":1,\"197\":1,\"202\":1,\"203\":2,\"212\":1}}],[\"password=\",{\"1\":{\"43\":1}}],[\"password\",{\"0\":{\"64\":1},\"1\":{\"11\":2,\"42\":4,\"58\":1,\"64\":1}}],[\"patharray\",{\"1\":{\"199\":1}}],[\"path\",{\"1\":{\"11\":1,\"42\":1,\"70\":1,\"199\":1,\"201\":2,\"206\":4,\"208\":3}}],[\"page\",{\"1\":{\"8\":1}}],[\"pipelining\",{\"1\":{\"159\":2}}],[\"pipelined\",{\"1\":{\"159\":1}}],[\"pipeline\",{\"0\":{\"158\":1},\"1\":{\"159\":2}}],[\"pip\",{\"1\":{\"9\":2,\"176\":2}}],[\"print\",{\"1\":{\"211\":1,\"212\":1}}],[\"prior\",{\"0\":{\"89\":1},\"1\":{\"89\":1}}],[\"primary\",{\"1\":{\"75\":1}}],[\"predefined\",{\"0\":{\"191\":1},\"1\":{\"191\":1,\"199\":1,\"209\":1}}],[\"preparation\",{\"1\":{\"173\":1}}],[\"prepared\",{\"1\":{\"27\":1,\"31\":1,\"33\":1,\"35\":1,\"37\":1,\"52\":1,\"54\":1,\"147\":1,\"151\":1,\"153\":1,\"155\":1,\"157\":1,\"159\":4,\"168\":1,\"173\":1}}],[\"prepare\",{\"1\":{\"8\":1,\"9\":1,\"27\":1,\"31\":1,\"33\":1,\"35\":1,\"37\":1,\"52\":1,\"54\":1,\"147\":1,\"151\":1,\"153\":1,\"155\":1,\"157\":1,\"159\":1,\"168\":1}}],[\"preferable\",{\"1\":{\"31\":1,\"52\":1,\"54\":1,\"56\":1,\"151\":1}}],[\"prefer\",{\"1\":{\"22\":1}}],[\"pre\",{\"1\":{\"10\":3}}],[\"previous\",{\"1\":{\"9\":1,\"89\":1,\"142\":1,\"159\":1,\"185\":1}}],[\"pr\",{\"1\":{\"8\":2}}],[\"provide\",{\"1\":{\"172\":1}}],[\"provided\",{\"1\":{\"33\":1,\"42\":1}}],[\"profiles\",{\"1\":{\"159\":1}}],[\"processing\",{\"1\":{\"195\":1}}],[\"process\",{\"1\":{\"159\":6,\"194\":1}}],[\"processes\",{\"1\":{\"4\":2}}],[\"probes\",{\"1\":{\"42\":2,\"79\":1,\"80\":1}}],[\"problems\",{\"1\":{\"12\":1}}],[\"problem\",{\"0\":{\"14\":1,\"16\":1,\"18\":1,\"20\":1},\"1\":{\"8\":1,\"13\":1,\"20\":1}}],[\"protocol\",{\"1\":{\"29\":1,\"149\":1}}],[\"production\",{\"1\":{\"4\":2,\"52\":1,\"177\":1}}],[\"project\",{\"1\":{\"1\":1,\"9\":3}}],[\"polygon\",{\"1\":{\"206\":1}}],[\"poetry\",{\"1\":{\"176\":1}}],[\"points\",{\"1\":{\"206\":2}}],[\"pointarray\",{\"1\":{\"199\":1}}],[\"point\",{\"1\":{\"29\":1,\"149\":1,\"199\":1,\"201\":3,\"206\":7,\"208\":3}}],[\"port=8000\",{\"1\":{\"190\":1}}],[\"port=5432\",{\"1\":{\"43\":1}}],[\"ports\",{\"1\":{\"42\":3,\"72\":3}}],[\"port\",{\"0\":{\"72\":1},\"1\":{\"11\":2,\"42\":3,\"58\":1,\"72\":2}}],[\"powerful\",{\"1\":{\"4\":1}}],[\"pooling\",{\"1\":{\"173\":2}}],[\"pool\",{\"0\":{\"40\":1,\"41\":1,\"43\":1,\"44\":1,\"45\":1,\"46\":1,\"47\":1,\"58\":1,\"61\":1,\"171\":1},\"1\":{\"4\":1,\"14\":4,\"16\":4,\"18\":4,\"20\":4,\"27\":1,\"29\":1,\"31\":1,\"33\":1,\"35\":1,\"37\":1,\"39\":1,\"40\":3,\"41\":5,\"42\":2,\"43\":2,\"44\":2,\"45\":2,\"46\":3,\"48\":2,\"49\":2,\"50\":5,\"52\":3,\"54\":1,\"55\":1,\"56\":1,\"57\":2,\"58\":2,\"61\":1,\"83\":2,\"105\":1,\"106\":1,\"107\":1,\"108\":1,\"127\":2,\"129\":2,\"134\":3,\"136\":2,\"141\":3,\"142\":3,\"147\":1,\"149\":1,\"151\":1,\"153\":1,\"155\":1,\"157\":1,\"159\":3,\"166\":1,\"170\":2,\"171\":2,\"177\":3,\"180\":17,\"182\":10,\"184\":10,\"185\":11,\"188\":19,\"190\":5,\"192\":1,\"193\":1,\"195\":1,\"197\":3,\"198\":3,\"200\":2,\"202\":3,\"203\":4,\"204\":4,\"205\":3,\"206\":3,\"211\":2,\"212\":4}}],[\"postgesql\",{\"1\":{\"172\":1}}],[\"postgres\",{\"1\":{\"11\":8,\"42\":4,\"43\":3,\"44\":4,\"45\":4,\"46\":4,\"141\":4,\"142\":4,\"180\":4,\"182\":4,\"184\":4,\"185\":4,\"188\":4,\"190\":4}}],[\"postgresql\",{\"0\":{\"197\":1,\"198\":1},\"1\":{\"1\":2,\"11\":4,\"13\":1,\"23\":1,\"39\":4,\"42\":12,\"56\":1,\"63\":1,\"64\":1,\"65\":1,\"81\":2,\"82\":1,\"139\":1,\"140\":3,\"141\":1,\"161\":1,\"162\":1,\"164\":1,\"166\":1,\"168\":3,\"172\":2,\"173\":1,\"196\":2,\"197\":2,\"198\":1,\"199\":1,\"201\":3,\"203\":2,\"204\":1,\"206\":2,\"208\":3,\"211\":1,\"212\":1}}],[\"possible\",{\"1\":{\"1\":1,\"4\":1,\"42\":1,\"50\":1,\"87\":1,\"101\":1,\"102\":1,\"196\":1}}],[\"psql\",{\"1\":{\"192\":1,\"193\":1,\"195\":1,\"198\":3}}],[\"psqlpy2\",{\"1\":{\"29\":1,\"149\":1}}],[\"psqlpy\",{\"0\":{\"0\":1,\"1\":1,\"172\":1},\"1\":{\"1\":2,\"3\":1,\"5\":1,\"8\":1,\"9\":1,\"11\":1,\"14\":2,\"16\":1,\"18\":2,\"20\":2,\"29\":1,\"39\":1,\"43\":1,\"44\":1,\"45\":1,\"46\":1,\"58\":4,\"83\":1,\"139\":1,\"141\":1,\"142\":1,\"149\":1,\"159\":2,\"172\":2,\"174\":1,\"176\":1,\"177\":1,\"179\":1,\"180\":1,\"181\":1,\"182\":1,\"184\":1,\"185\":1,\"187\":1,\"188\":1,\"189\":1,\"190\":1,\"192\":1,\"193\":1,\"197\":4,\"198\":3,\"199\":1,\"200\":2,\"201\":2,\"202\":2,\"203\":3,\"204\":3,\"205\":2,\"206\":2,\"208\":3,\"211\":3,\"212\":1}}],[\"psycopg\",{\"1\":{\"5\":1}}],[\"psycopg3\",{\"1\":{\"1\":1,\"172\":1}}],[\"advanced\",{\"0\":{\"185\":1,\"196\":1},\"1\":{\"196\":1}}],[\"additional\",{\"1\":{\"201\":1,\"204\":4}}],[\"address\",{\"1\":{\"42\":1,\"73\":1,\"208\":2}}],[\"addresses\",{\"1\":{\"42\":5,\"73\":1,\"205\":1}}],[\"add\",{\"1\":{\"8\":1,\"70\":1,\"71\":1,\"72\":1,\"180\":1,\"182\":1}}],[\"awesome\",{\"1\":{\"172\":1}}],[\"await\",{\"1\":{\"14\":2,\"16\":2,\"18\":2,\"20\":2,\"27\":2,\"29\":2,\"31\":2,\"33\":2,\"35\":2,\"37\":2,\"39\":1,\"40\":1,\"46\":1,\"52\":1,\"54\":1,\"56\":1,\"83\":2,\"85\":1,\"86\":1,\"87\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":1,\"95\":1,\"96\":1,\"127\":2,\"129\":2,\"134\":2,\"136\":2,\"141\":5,\"142\":3,\"144\":1,\"145\":1,\"147\":2,\"149\":2,\"151\":2,\"153\":2,\"155\":2,\"157\":2,\"159\":3,\"161\":3,\"162\":2,\"164\":3,\"166\":3,\"168\":2,\"177\":1,\"180\":3,\"182\":2,\"184\":2,\"185\":3,\"188\":2,\"190\":3,\"192\":1,\"193\":1,\"195\":1,\"197\":1,\"198\":1,\"200\":1,\"202\":1,\"203\":2,\"204\":2,\"205\":1,\"206\":1,\"211\":1,\"212\":3}}],[\"automatically\",{\"1\":{\"141\":1,\"142\":3}}],[\"amount\",{\"1\":{\"78\":1}}],[\"accurately\",{\"1\":{\"201\":1}}],[\"accepts\",{\"1\":{\"194\":1,\"197\":1}}],[\"acceleration\",{\"1\":{\"172\":2}}],[\"account\",{\"1\":{\"184\":1}}],[\"acquire\",{\"0\":{\"55\":1},\"1\":{\"55\":1}}],[\"activate\",{\"1\":{\"9\":1}}],[\"available\",{\"0\":{\"42\":1},\"1\":{\"42\":2,\"50\":2,\"58\":1,\"74\":1,\"201\":1}}],[\"age\",{\"1\":{\"33\":1,\"153\":1,\"211\":2}}],[\"attempts\",{\"1\":{\"73\":1}}],[\"attempt\",{\"1\":{\"42\":2}}],[\"attrs\",{\"0\":{\"75\":1},\"1\":{\"42\":2}}],[\"attrs=read\",{\"1\":{\"42\":2}}],[\"atomicity\",{\"1\":{\"33\":1}}],[\"at\",{\"1\":{\"29\":1,\"57\":1,\"149\":1,\"185\":1}}],[\"alias\",{\"1\":{\"198\":1}}],[\"aliases\",{\"1\":{\"198\":1}}],[\"aleksandr\",{\"1\":{\"177\":1}}],[\"alex\",{\"1\":{\"27\":1,\"31\":1,\"52\":1,\"54\":1,\"141\":1,\"142\":1,\"147\":1,\"151\":1,\"200\":1,\"211\":2}}],[\"already\",{\"1\":{\"142\":1}}],[\"alternatively\",{\"1\":{\"203\":1}}],[\"alternative\",{\"1\":{\"141\":1}}],[\"also\",{\"1\":{\"42\":1,\"202\":1,\"206\":1}}],[\"allows\",{\"1\":{\"58\":1,\"159\":1}}],[\"all\",{\"0\":{\"42\":1,\"94\":1,\"96\":1},\"1\":{\"1\":1,\"8\":1,\"9\":1,\"10\":2,\"40\":2,\"58\":1,\"72\":1,\"94\":2,\"96\":2,\"100\":1,\"105\":1,\"112\":1,\"141\":2,\"159\":1,\"173\":1,\"196\":1,\"201\":1,\"206\":1,\"208\":1}}],[\"arr\",{\"1\":{\"20\":3,\"210\":1}}],[\"arrays\",{\"1\":{\"209\":1}}],[\"array\",{\"0\":{\"19\":1,\"199\":1,\"209\":1},\"1\":{\"17\":1,\"19\":2,\"20\":4,\"199\":30,\"204\":2,\"209\":1,\"210\":1}}],[\"are\",{\"1\":{\"4\":2,\"5\":1,\"8\":1,\"40\":1,\"43\":1,\"84\":1,\"97\":1,\"102\":1,\"124\":2,\"139\":1,\"141\":3,\"172\":1,\"173\":1,\"176\":1,\"197\":1,\"198\":1,\"202\":2}}],[\"aren\",{\"1\":{\"4\":1,\"41\":1}}],[\"after\",{\"1\":{\"9\":2,\"42\":1,\"52\":1,\"141\":2,\"159\":1,\"176\":1,\"208\":1}}],[\"annotated\",{\"1\":{\"184\":2,\"185\":1}}],[\"annotations\",{\"1\":{\"182\":1,\"188\":1,\"190\":1}}],[\"anything\",{\"1\":{\"40\":1,\"194\":1}}],[\"any\",{\"1\":{\"15\":1,\"16\":1,\"17\":1,\"18\":2,\"27\":2,\"31\":1,\"35\":2,\"41\":1,\"52\":2,\"54\":1,\"58\":1,\"75\":1,\"83\":2,\"122\":1,\"127\":1,\"134\":1,\"147\":2,\"151\":1,\"155\":2,\"159\":1,\"168\":2,\"171\":1,\"172\":2,\"177\":2,\"182\":3,\"188\":3,\"190\":3,\"194\":1,\"195\":2,\"198\":2,\"200\":1,\"203\":1,\"209\":1}}],[\"an\",{\"1\":{\"8\":1,\"29\":1,\"35\":1,\"37\":2,\"141\":1,\"142\":1,\"149\":1,\"155\":1,\"157\":2,\"172\":1,\"173\":1,\"185\":1,\"196\":1,\"197\":1,\"204\":1}}],[\"andr\",{\"1\":{\"177\":1}}],[\"and\",{\"0\":{\"10\":1,\"14\":1,\"16\":1,\"18\":1,\"20\":1},\"1\":{\"1\":4,\"3\":1,\"4\":5,\"5\":3,\"8\":1,\"9\":1,\"11\":2,\"12\":1,\"13\":1,\"17\":2,\"22\":1,\"27\":1,\"31\":1,\"40\":1,\"41\":1,\"42\":7,\"48\":1,\"52\":1,\"54\":1,\"70\":1,\"71\":1,\"73\":1,\"74\":1,\"82\":1,\"97\":1,\"141\":2,\"147\":1,\"151\":1,\"170\":1,\"171\":1,\"172\":1,\"177\":1,\"182\":1,\"184\":3,\"185\":2,\"188\":1,\"194\":2,\"195\":2,\"196\":1,\"197\":2,\"198\":2,\"199\":1,\"201\":1,\"202\":1,\"203\":1,\"204\":1,\"205\":1,\"209\":1,\"212\":3}}],[\"append\",{\"1\":{\"180\":1}}],[\"app\",{\"1\":{\"180\":6,\"182\":9,\"184\":6,\"185\":5,\"188\":10,\"190\":3}}],[\"apply\",{\"1\":{\"73\":1,\"198\":1}}],[\"applied\",{\"1\":{\"42\":2,\"73\":1}}],[\"application\",{\"0\":{\"67\":1},\"1\":{\"4\":4,\"5\":2,\"42\":2,\"57\":1,\"67\":1,\"172\":1,\"173\":1,\"177\":1,\"180\":7,\"182\":5,\"185\":1,\"188\":1}}],[\"applications\",{\"1\":{\"1\":1}}],[\"approved\",{\"1\":{\"8\":1}}],[\"approximately\",{\"1\":{\"5\":1}}],[\"aiohttp\",{\"0\":{\"179\":1},\"1\":{\"4\":1,\"179\":2,\"180\":1}}],[\"absolute\",{\"0\":{\"92\":1},\"1\":{\"92\":4,\"93\":1}}],[\"abstractions\",{\"1\":{\"1\":1,\"172\":1}}],[\"about\",{\"1\":{\"33\":1,\"173\":1,\"198\":1}}],[\"above\",{\"1\":{\"1\":1,\"204\":1}}],[\"assert\",{\"1\":{\"192\":1,\"193\":1,\"195\":1}}],[\"assume\",{\"1\":{\"20\":1,\"177\":1,\"197\":1,\"198\":1,\"202\":1,\"203\":1,\"204\":2,\"205\":1,\"206\":1,\"212\":1}}],[\"asyncgenerator\",{\"1\":{\"184\":2,\"185\":2}}],[\"asynccontextmanager\",{\"1\":{\"184\":2,\"185\":2}}],[\"asyncio\",{\"1\":{\"43\":1,\"44\":1,\"159\":1,\"177\":1,\"180\":2,\"190\":2}}],[\"async\",{\"0\":{\"83\":1,\"142\":1},\"1\":{\"14\":2,\"16\":2,\"18\":2,\"20\":2,\"27\":1,\"29\":1,\"31\":1,\"33\":1,\"35\":1,\"37\":1,\"39\":1,\"40\":2,\"46\":1,\"49\":1,\"52\":1,\"54\":1,\"55\":4,\"56\":1,\"82\":1,\"83\":4,\"85\":1,\"86\":1,\"87\":1,\"88\":1,\"89\":1,\"90\":1,\"91\":1,\"92\":1,\"93\":1,\"94\":1,\"95\":1,\"96\":1,\"127\":1,\"129\":1,\"134\":1,\"136\":1,\"141\":4,\"142\":5,\"144\":1,\"145\":1,\"147\":2,\"149\":2,\"151\":2,\"153\":2,\"155\":2,\"157\":2,\"159\":1,\"161\":1,\"162\":1,\"164\":1,\"166\":1,\"168\":2,\"177\":1,\"180\":3,\"182\":3,\"184\":3,\"185\":3,\"188\":2,\"190\":2,\"192\":1,\"193\":1,\"195\":1,\"197\":1,\"198\":1,\"200\":1,\"202\":1,\"203\":1,\"204\":1,\"205\":1,\"206\":1,\"211\":1,\"212\":1}}],[\"asyncpg\",{\"1\":{\"1\":1,\"5\":1,\"172\":1}}],[\"asked\",{\"0\":{\"12\":1}}],[\"ask\",{\"1\":{\"8\":1}}],[\"as\",{\"0\":{\"46\":1,\"83\":1,\"128\":1,\"135\":1},\"1\":{\"1\":2,\"4\":1,\"10\":1,\"27\":1,\"31\":1,\"33\":1,\"45\":1,\"46\":1,\"52\":2,\"54\":1,\"55\":1,\"70\":2,\"71\":1,\"72\":1,\"82\":1,\"83\":1,\"127\":1,\"129\":4,\"134\":1,\"136\":4,\"142\":1,\"147\":2,\"149\":1,\"151\":2,\"153\":1,\"155\":1,\"157\":1,\"173\":1,\"179\":1,\"181\":1,\"187\":1,\"189\":1,\"192\":1,\"195\":1,\"198\":1,\"202\":2,\"203\":1,\"211\":1,\"212\":1}}],[\"a\",{\"1\":{\"1\":3,\"4\":4,\"8\":2,\"10\":2,\"29\":2,\"33\":1,\"42\":9,\"62\":1,\"70\":5,\"71\":1,\"72\":2,\"75\":1,\"78\":1,\"80\":1,\"84\":1,\"97\":1,\"127\":1,\"129\":1,\"134\":1,\"136\":1,\"142\":1,\"144\":1,\"145\":1,\"149\":2,\"159\":1,\"172\":2,\"177\":1,\"179\":1,\"181\":1,\"182\":2,\"184\":1,\"185\":6,\"187\":1,\"189\":1,\"192\":1,\"194\":4,\"195\":1,\"196\":1}}]],\"version\":2}}")).map(([e,t])=>[e,zt(t,{fields:["h","t","c"],storeFields:["h","t","c"]})]));self.onmessage=({data:{type:e="all",query:t,locale:s,options:n,id:o}})=>{const u=bt[s];e==="suggest"?self.postMessage([e,o,tt(t,u,n)]):e==="search"?self.postMessage([e,o,Z(t,u,n)]):self.postMessage({suggestions:[e,o,tt(t,u,n)],results:[e,o,Z(t,u,n)]})};
//# sourceMappingURL=index.js.map