
    B>qju?                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 dZd dlmZ d Z	 d dlmZ dZdZd	Zd
ZdZdZdZdZi Zi Z G d de      Z e       Z e       Z d Z!dFdZ"d Z#d Z$d Z%d Z& e"e      dFd       Z' e"e      d        Z( e"e      dGd       Z) e"e      d        Z* e"e      d        Z+ e"e      dHd       Z, e"e      d        Z- e"e      d        Z. e"e      d        Z/ e"e      dFd        Z0 e"e      d!        Z1 e"e      d"        Z2 e"e      dId#       Z3 e"e      d$        Z4 e"e      d%        Z5 e"e      d&        Z6 e"e      d'        Z7 e"e      d(        Z8 e"e      d)        Z9 G d* d+e:      Z; G d, d-e;      Z< e!e       G d. d/e<             Z= e!e       G d0 d1e<             Z> e!e       G d2 d3e:             Z? e!e       G d4 d5e:             Z@ e!e       G d6 d7e;             ZA e!e       G d8 d9e;             ZB e!e       G d: d;e:             ZC e!e       G d< d=e:             ZDd> ZEd? ZFd@ ZGdA ZHe  e"edB      ej                        ZG  e"edC      ej                        ZK  e"edD      ej                        ZH  e"edE      ej                        ZN  e"e      ej                        ZO  e"e      ej                        ZP  e"e      ej                        ZQ  e!e      ej                        ZRy  e"edB      eG      ZG  e"edD      eH      ZHy# e$ r dZY w xY w)J    N)urlparse)z%Y-%m-%d %H:%M:%S.%fz%Y-%m-%d %H:%M:%S.%f%zz%Y-%m-%d %H:%M:%Sz%Y-%m-%d %H:%M:%S%zz%Y-%m-%dz%H:%M:%Sz%H:%M:%S.%fz%H:%M)format_date_timec                 "    t        | t              S N)r   SQLITE_DATETIME_FORMATS)
date_values    S/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/playhouse/sqlite_udf.pyformat_date_time_sqliter
      s    J(?@@    )_sqlite_udfcontrol_flowdatefilehelpersjsonmathrankstringc                   <     e Zd Z fdZ fdZ fdZ fdZ xZS )synchronized_dictc                 ^    t        t        | 
  |i | t        j                         | _        y r   )superr   __init__	threadingLock_lock)selfargskwargs	__class__s      r	   r   zsynchronized_dict.__init__1   s&    /@@^^%
r   c                 n    | j                   5  t        t        |   |      cd d d        S # 1 sw Y   y xY wr   )r   r   r   __getitem__r   keyr    s     r	   r"   zsynchronized_dict.__getitem__5   3    ZZ 	C*D=cB	C 	C 	C   +4c                 p    | j                   5  t        t        |   ||      cd d d        S # 1 sw Y   y xY wr   )r   r   r   __setitem__)r   r$   valuer    s      r	   r(   zsynchronized_dict.__setitem__9   s5    ZZ 	J*D=c5I	J 	J 	Js   ,5c                 n    | j                   5  t        t        |   |      cd d d        S # 1 sw Y   y xY wr   )r   r   r   __delitem__r#   s     r	   r+   zsynchronized_dict.__delitem__=   r%   r&   )__name__
__module____qualname__r   r"   r(   r+   __classcell__)r    s   @r	   r   r   0   s     &CJC Cr   r   c                        fd}|S )Nc                 r    D ]0  }t         j                  |g        t         |   j                  |        2 | S r   )AGGREGATE_COLLECTION
setdefaultappend)klassgroupgroupss     r	   	decoratorzaggregate.<locals>.decoratorG   s<     	6E ++E26 '..u5	6 r    )r7   r8   s   ` r	   	aggregater:   F   s    
 r   c                       fd}|S )Nc                     t         j                  g        t            j                  | xs | j                  f       | S r   )UDF_COLLECTIONr3   r4   r,   )fnr6   names    r	   r8   zudf.<locals>.decoratorO   s9    !!%,u$$b$*="++%>?	r   r9   )r6   r?   r8   s   `` r	   udfr@   N   s     r   c                     t               }|D ]^  }t        j                  |d      }|D ]A  }t        |d|j                        }||vs|j                  |       | j                  ||       C ` y )Nr9   r?   )setr2   getgetattrr,   addregister_aggregate)dbr7   seenr6   klassesr5   r?   s          r	   register_aggregate_groupsrJ   V   sn    5D 3&**5"5 	3E5&%..9D4%%eT2		33r   c                     t               }|D ]J  }t        j                  |d      }|D ]-  \  }}||vs|j                  |       | j	                  ||       / L y )Nr9   )rB   r=   rC   rE   register_function)rG   r7   rH   r6   	functionsfunctionr?   s          r	   register_udf_groupsrO   `   s`    5D 5"&&ub1	' 	5NHd4$$Xt4	55r   c                 4    t        | g|  t        | g|  y r   )rJ   rO   )rG   r7   s     r	   register_groupsrQ   i   s    b*6*$V$r   c                 D    t        | gt          t        | gt          y r   )rJ   r2   rO   r=   )rG   s    r	   register_allrS   m   s    b8#78,^,r   c                     | r|S |S r   r9   )condtruthyfalseys      r	   if_then_elserX   u   s    Mr   c                     | j                  dd      } | j                  d      }|dk7  r| d | S | j                  d      }|dkD  r| d | S | S )NT +-   )replacefind)date_strtz_idx1tz_idx2s      r	   strip_tzre   {   s]    S)HmmC G"}!!mmC G|!!Or   c                     d}g }|D ]<  \  }}t        | |      \  }} |s|dk7  xr dxs d}|j                  |d||       > |sy|j                  |      S )N))i3year)i ' month)i:	 week)iQ day)i  hour)<   minute)   secondrn   s r[   z	0 seconds)divmodr4   join)nsecondsgluepartsaccumoffsetr?   valsuffixs           r	   human_deltar{      ss    E E :x0XAX%#+FLLc489	:
 99Ur   c                 j    	 t         j                  j                  |       }|d   S # t        $ r Y y w xY wNrn   )ospathsplitext
ValueError)filenameress     r	   file_extr      s:    ggx( q6M  s   & 	22c                 t    	 t        |       5 }|j                         cd d d        S # 1 sw Y   y xY w#  Y y xY wr   )openread)r   fhs     r	   	file_readr      s7    (^ 	r779	 	 	s   3 '	3 03 3 7c                 p    t        | t              r| j                  d      } t        j                  | |      S )Nutf8)
isinstancestrencodezlibcompress)datacompressions     r	   gzipr      s+    ${{6"=={++r   c                 ,    t        j                  |       S r   )r   
decompress)r   s    r	   gunzipr      s    ??4  r   c                 6    t        |       }|r|j                  S y r   )r   netloc)urlparse_results     r	   hostnamer      s    C=L""" r   c                 d    | j                         } t        j                  |        xt        | <   }|S r   )lowerSTATErC   )r$   rets     r	   toggler      s+    
))+C 99S>))E#JJr   c                 F    |t         j                  |       S |t         | <   |S r   )SETTINGSrC   )r$   r)   s     r	   settingr      s$    }||C  r   c                  ,    t         j                          y r   )r   clearr9   r   r	   clear_settingsr      s    NNr   c                  ,    t         j                          y r   )r   r   r9   r   r	   clear_togglesr      s    	KKMr   c                 F    |d| }} n|d}t        j                  | ||      S Nr   rn   )random	randrange)startendsteps      r	   randomranger      s/    
{s	E3--r   c                 N    	 t        j                  | |      S # t        $ r Y y w xY wr   )r   gaussr   )meansigmas     r	   gauss_distributionr      s*    ||D%(( s    	$$c                 L    	 t        j                  |       S # t        $ r Y y w xY wr   )r   sqrtr   )ns    r	   r   r      s'    yy| s    	##c                 `    	 t        |       S # t        $ r 	 t        |       cY S #  Y Y y xY ww xY wr   )intr   float)rp   s    r	   tonumberr      s7    1v 	8O		s   
 	-
$-)--c                 .    | r|sy| j                  |      S Nr   )count)haystackneedles     r	   substr_countr      s    6>>&!!r   c                 $    | j                  |      S r   )strip)r   charss     r	   strip_charsr      s    >>%  r   c                    g }	 |j                  t        j                  |      t        j                  |       f       |r|j                         \  }}t	        |t
              rZt	        |t
              r'|D ]!  }||vr y|j                  ||   ||   f       # nt	        |t              r|D ]  }||vs y nu||vrqyt	        |t              rZt	        |t
              ryt	        |t              r4	 t        t        |            D ]  }|j                  ||   ||   f        n||vry||k7  ry|ry#  Y yxY w# t        $ r Y yw xY w)NFT)
r4   r   loadspopr   dictlistrangelen
IndexError)src_jsonobj_jsonstackobjsrcr$   itemis           r	   json_containsr      sM   Edjj*DJJx,@AB
 99;Sc4 #t$ 7C#~$LL#c(CH!567 C& %D3$% CT"#t$C&!"3s8_ 7c!fc!f%567 CCZ5 6 ?. " ! !s   9D0 .2D7 0D47	EEc                       e Zd Zd Zd Zd Zy)	_heap_aggc                      g | _         d| _        y r   )heapctr   s    r	   r   z_heap_agg.__init__$  s    	r   c                     |S r   r9   r   r)   s     r	   processz_heap_agg.process(  s    r   c                     | xj                   dz  c_         t        j                  | j                  | j	                  |             y r}   )r   heapqheappushr   r   r   s     r	   r   z_heap_agg.step+  s*    1tyy$,,u"56r   N)r,   r-   r.   r   r   r   r9   r   r	   r   r   #  s    7r   r   c                       e Zd Zd Zy)_datetime_heap_aggc                     t        |      S r   )r
   r   s     r	   r   z_datetime_heap_agg.process0  s    &u--r   N)r,   r-   r.   r   r9   r   r	   r   r   /  s    .r   r   c                       e Zd Zd Zy)mintdiffc                    d x}}| j                   r`|"| t        j                  | j                         }0t        j                  | j                         }||z
  }|||kD  r|}|}| j                   r`||j                         S y r   )r   r   heappoptotal_seconds)r   dtpmin_diffdtdiffs        r	   finalizezmintdiff.finalize5  s    hii;--		2Ctyy)B8D8d?C ii ))++  r   Nr,   r-   r.   r   r9   r   r	   r   r   3  s    ,r   r   c                       e Zd Zd Zy)avgtdiffc                 f   | j                   dk  ry | j                   dk(  rydx}}d }| j                  rr|dk(  r"| t        j                  | j                        }3t        j                  | j                        }||z
  }|dz  }||j	                         z  }|}| j                  rrt        |      |z  S Nrn   r   )r   r   r   r   r   r   )r   totalr   r   r   r   s         r	   r   zavgtdiff.finalizeF  s    77Q;WW\iiz;--		2Ctyy)B8D!GBT''))EC ii U|b  r   Nr   r9   r   r	   r   r   D      !r   r   c                       e Zd Zd Zd Zd Zy)durationc                      d x| _         | _        y r   _min_maxr   s    r	   r   zduration.__init__^       $$	DIr   c                     t        |      }| j                  || j                  k  r|| _        | j                  || j                  kD  r|| _        y y r   )r
   r   r   )r   r)   r   s      r	   r   zduration.stepa  sG    $U+99TYYDI99TYYDI !/r   c                     | j                   r5| j                  r)| j                  | j                   z
  }|j                         S y r   )r   r   r   )r   tds     r	   r   zduration.finalizeh  s3    99))dii'B##%%r   Nr,   r-   r.   r   r   r   r9   r   r	   r   r   \  s    %r   r   c                       e Zd Zd Zd Zd Zy)modec                 6    t        j                         | _        y r   )collectionsCounteritemsr   s    r	   r   zmode.__init__p  s     ((*
r   c                 :    | j                   j                  |       y r   )r  update)r   r   s     r	   r   z	mode.steps  s    

$r   c                 ^    | j                   r!| j                   j                  d      d   d   S y r   )r  most_commonr   s    r	   r   zmode.finalizev  s-    ::::))!,Q/22 r   Nr  r9   r   r	   r  r  n  s    + 3r   r  c                       e Zd Zd Zy)minrangec                 &   | j                   dk(  ry | j                   dk(  ryd x}}| j                  r`|"| t        j                  | j                        }0t        j                  | j                        }||z
  }|||kD  r|}|}| j                  r`|S r   )r   r   r   r   )r   prevr   currr   s        r	   r   zminrange.finalize|  s    77a<WW\xii< ==3D==+D$;D8d?D ii r   Nr   r9   r   r	   r  r  z  s    r   r  c                       e Zd Zd Zy)avgrangec                 J   | j                   dk(  ry | j                   dk(  rydx}}d }| j                  rd|dk(  r"| t        j                  | j                        }3t        j                  | j                        }||z
  }|dz  }||z  }|}| j                  rdt	        |      |z  S r   )r   r   r   r   r   )r   r   r   r  r  r   s         r	   r   zavgrange.finalize  s    77a<WW\iiz< ==3D==+D$;D!GBTMED ii U|b  r   Nr   r9   r   r	   r  r    r   r   r  c                   "    e Zd ZdZd Zd Zd Zy)_ranger   c                      d x| _         | _        y r   r   r   s    r	   r   z_range.__init__  r   r   c                     | j                   || j                   k  r|| _         | j                  || j                  kD  r|| _        y y r   r   r   s     r	   r   z_range.step  s?    99		 1DI99		 1DI !2r   c                 f    | j                   %| j                  | j                  | j                   z
  S y r   r   r   s    r	   r   z_range.finalize  s+    99 TYY%:99tyy((r   N)r,   r-   r.   r?   r   r   r   r9   r   r	   r  r    s    D%r   r  c                       e Zd Zd Zd Zd Zy)stddevc                      d| _         g | _        y r   )r   valuesr   s    r	   r   zstddev.__init__  s    r   c                 d    | xj                   dz  c_         | j                  j                  |       y r}   )r   r  r4   )r   vs     r	   r   zstddev.step  s!    !1r   c                     | j                   dk  ryt        | j                        | j                   z  t        j                  t        fd| j                  D              | j                   dz
  z        S )Nrn   r   c              3   .   K   | ]  }|z
  d z    yw)   Nr9   ).0r   r   s     r	   	<genexpr>z"stddev.finalize.<locals>.<genexpr>  s     Ba$h1_Bs   )r   sumr  r   r   )r   r   s    @r	   r   zstddev.finalize  sS    66Q;4;;$&&(yyBdkkBBdffqjQRRr   Nr  r9   r   r	   r  r    s    Sr   r  c           
          t        |       }t        d|d      D cg c]!  }t        j                  d| ||dz          d   # c}S c c}w )Nr      z@I)r   r   structunpack)bufbufsizer   s      r	   _parse_match_infor+    sB    #hG8=a!8LM1FMM$Aac
+A.MMMs   &Ac                 R    |sdg| z  S dg| z  }t        |      D ]
  \  }}|||<    |S r   )	enumerate)ncolraw_weightsweightsr   weights        r	   get_weightsr2    sB    sTz#*";/ 	 IAvGAJ	 Nr   c                    t        |       }d}|d d \  }}t        ||      }t        |      D ]T  }d||z  dz  z   }t        |      D ]9  }	||	   }
|
s||	dz  z   }||   }||dz      }|dkD  s&||
t        |      |z  z  z  }; V | S )N        r!     rn   r   )r+  r2  r   r   )raw_match_infor/  
match_infoscorepcr0  
phrase_numphrase_info_idxcol_numr1  col_idxrow_hitsall_rows_hitss                 r	   r   r     s     #>2JEbq>DAq![)G Ah D
zA~12Qx 	DGW%F%15G "'*H&w{3M!|5?]#BCC	DD$ 6Mr   c                 @   t        |       }d}d}d}t        d      \  }}}}	||   }
||   }||   }|	|z   }||z   }t        ||      }t        |
      D ]  }t        |      D ]  }||   }|dk(  r|d|||z  z   z  z   }t        ||         }t        ||dz            }t	        j
                  ||z
  dz   |dz   z        }|dk  rd	}t        |||z            }t        ||	|z            xs d
}||z  }||d
z   z  }d
|z
  ||z  z   }|||z  z   }|||z  z  }|||z  z  }  | S )z
    Usage:

        # Format string *must* be pcnalx
        # Second parameter to bm25 specifies the index of the column, on
        # the table being queries.
        bm25(matchinfo(document_tbl, 'pcnalx'), 1) AS rank
    g333333?g      ?r4  r&  r   r5  r!  g      ?gư>g      ?)r+  r   r2  r   r   log)r6  r   r7  KBr8  P_OC_ON_OA_O
term_count	col_count
total_docsL_OX_Or0  r   jr1  xterm_frequencydocs_with_termidf
doc_length
avg_lengthrationumb_partdenompc_scores                                 r	   bm25rZ    s    #>2JAAEqCc3CJ3ICJ
	/C
	/C: )T*G: )y! 	)AQZF{qAI-./A":a=1N":a!e#45N ((.036#c)+,C czz#'23Jz#'239rJ+E AG,C1WE	*F"a&j1EcEk*Hh'(E3	))8 6Mr   fts_rank
fts_lucenefts_bm25	fts_bm25fr   )z, )	   )NN)Sr  r   r   r   r~   r   r'  r   r   urllib.parser   r   peeweer   r
   	playhouser   
cython_udfImportErrorCONTROL_FLOWDATEFILEHELPERJSONMATHRANKSTRINGr2   r=   r   r   r   r   r:   r@   rJ   rO   rQ   rS   rX   re   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   objectr   r   r   r   r   r  r  r  r  r  r+  r2  r   rZ  peewee_rankpeewee_lucenelucenepeewee_bm25peewee_bm25fbm25fdamerau_levenshtein_distlevenshtein_diststr_distmedianr9   r   r	   <module>rx     s       	     !  $A3 		 C C$ 	35%- \ 
 T  T ( T  T  V, ,
 V! ! V# #
 V 
 V  V  V  T. . T  T  T  V" "
 V! ! T# #N
7 
7. . 4,! , ,  4!! ! !. 4v  " 4	36 	3 	3 4y  * 4!y ! !. 4V  " 4SV S SN
!HNb  3tZ !7!78D$S|$Z%=%=>F 3tZ !7!78D"Ck":#:#:;E*s6{:+N+NO"s6{:#>#>?s6{:../HYt_Z../F 3tZ &D 3tZ &Dw  Js   M MM