
    Vi                         S SK r S SK7  S SKJr  S SKJr  S SKJr   S SKJr  \
" S\40 5      r " S	 S
\5      rg! \	 a	    S SKJr   N%f = f)    N)*)sqlite3)
Expression)PickleField)CSqliteExtDatabase)SqliteExtDatabaseSentinelc                       \ rS rSrSr  SS jrS rS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rSS jrSS jrSS jrSS jr\4S jrS rSrg)KeyValue   aZ  
Persistent dictionary.

:param Field key_field: field to use for key. Defaults to CharField.
:param Field value_field: field to use for value. Defaults to PickleField.
:param bool ordered: data should be returned in key-sorted order.
:param Database database: database where key/value data is stored.
:param str table_name: table name for data.
Nc                    Uc
  [        SSS9nUR                  (       d  [        S5      eUc
  [        5       nXl        X l        X0l        U=(       d    [        S5      U l        XPl	        [        U R                  [        5      =(       d:    [        U R                  [        5      =(       a    U R                  R                  S:  nU(       a#  U R                  U l        U R                   U l        O"U R$                  U l        U R&                  U l        U R)                  5       U l        U R*                  R,                  U l        U R*                  R.                  U l        U R*                  R1                  5         g )N   T)
max_lengthprimary_keyz%key_field must have primary_key=True.z:memory:)      )	CharFieldr   
ValueErrorr   
_key_field_value_field_orderedr   	_database_table_name
isinstancePostgresqlDatabaseSqliteDatabaseserver_version_postgres_upsertupsert_postgres_updateupdate_upsert_updatecreate_modelmodelkeyvaluecreate_table)self	key_fieldvalue_fieldordereddatabase
table_namesupport_on_conflicts          _/home/james-whalen/.local/share/pipx/venvs/semgrep/lib/python3.13/site-packages/playhouse/kv.py__init__KeyValue.__init__   s   !SdCI$$DEE%-K#'!B%6z%B%)$..:LM  I)$...I  H#~~<<G 	 //DK//DK,,DK,,DK&&(
::>>ZZ%%
 	

!    c                 ,   ^   " U 4S jS[         5      nU$ )Nc                   d   > \ rS rSr Y R                  r Y R                  r " U 4S jS5      rSr	g)'KeyValue.create_model.<locals>.KeyValue;   c                   J   > \ rS rSr Y R                  r Y R                  rSrg),KeyValue.create_model.<locals>.KeyValue.Meta>    N)	__name__
__module____qualname____firstlineno__r   r-   r   r.   __static_attributes__r)   s   r0   Metar9   >   s    >>!--
r3   rB   r;   N)
r<   r=   r>   r?   r   r&   r   r'   rB   r@   rA   s   r0   r   r6   ;   s!    //C%%E. .r3   r   )Model)r)   r   s   ` r0   r$   KeyValue.create_model:   s    	.u 	. r3   c                     U R                   R                  " U6 R                  5       nU R                  (       a  UR	                  U R
                  5      nU$ N)r%   selecttuplesr   order_byr&   )r)   rG   querys      r0   rJ   KeyValue.queryC   s=    

!!6*113==NN488,Er3   c                 V    [        U[        5      (       d  U R                  U:H  S4$ US4$ )NTF)r   r   r&   )r)   exprs     r0   convert_expressionKeyValue.convert_expressionI   s-    $
++HH$t++U{r3   c                     U R                  U5      u  p#U R                  R                  5       R                  U5      R	                  5       $ rF   )rN   r%   rG   whereexists)r)   r&   rM   _s       r0   __contains__KeyValue.__contains__N   s;    ))#.zz  "((.5577r3   c                 ,    [        U R                  5      $ rF   )lenr%   rA   s    r0   __len__KeyValue.__len__R   s    4::r3   c                 >   U R                  U5      u  p#U R                  U R                  5      R                  U5      n[        R
                  " S5      nU Vs/ s H
  oe" U5      PM     nn[        U5      S:X  a  U(       a  [        U5      eU(       a  US   $ U$ s  snf Nr   )rN   rJ   r'   rQ   operator
itemgetterrW   KeyError)r)   rM   	converted	is_singlerJ   item_getterrowresults           r0   __getitem__KeyValue.__getitem__U   s    #66t<	

4::&,,Y7))!,.34es+c"e4v;!	4. !9 5s   Bc                 p    U R                   R                  XS9R                  S5      R                  5         g )Nr&   r'   replace)r%   inserton_conflictexecuter)   r&   r'   s      r0   r"   KeyValue._upsert`   s&    	
&S&
&
+i
 
')r3   c                     U R                   R                  XS9R                  U R                  /U R                  /S9R                  5         g )Nrg   conflict_targetpreserve)r%   ri   rj   r&   r'   rk   rl   s      r0   r   KeyValue._postgres_upsertf   s<    	
&S&
&
+txxj $

|  -
')r3   c                     [        U[        5      (       a7  U R                  R                  US9R	                  U5      R                  5         g U R                  X5        g )N)r'   )r   r   r%   r!   rQ   rk   r   )r)   rM   r'   s      r0   __setitem__KeyValue.__setitem__m   sD    dJ''JJE*006>>@KK$r3   c                     U R                  U5      u  p#U R                  R                  5       R                  U5      R	                  5         g rF   )rN   r%   deleterQ   rk   )r)   rM   r_   rS   s       r0   __delitem__KeyValue.__delitem__s   s8    ..t4	

!!),446r3   c                 P    [        U R                  5       R                  5       5      $ rF   iterrJ   rk   rA   s    r0   __iter__KeyValue.__iter__w       DJJL((*++r3   c                 t    [        [        R                  " S5      U R                  U R                  5      5      $ r[   )mapr\   r]   rJ   r&   rA   s    r0   keysKeyValue.keysz   s'    8&&q)4::dhh+?@@r3   c                 t    [        [        R                  " S5      U R                  U R                  5      5      $ r[   )r   r\   r]   rJ   r'   rA   s    r0   valuesKeyValue.values}   s'    8&&q)4::djj+ABBr3   c                 P    [        U R                  5       R                  5       5      $ rF   r{   rA   s    r0   itemsKeyValue.items   r   r3   c                     Ub  UR                  U5        U R                  R                  [        UR	                  5       5      U R
                  U R                  /S9R                  S5      R                  5       $ )Nfieldsrh   	r!   r%   insert_manylistr   r&   r'   rj   rk   r)   _KeyValue__datamappings      r0   r#   KeyValue._update   s]    NN6"

T'--/2%)XXtzz$:  <Y'		r3   c                    Ub  UR                  U5        U R                  R                  [        UR	                  5       5      U R
                  U R                  /S9R                  U R
                  /U R                  /S9R                  5       $ )Nr   ro   r   r   s      r0   r    KeyValue._postgres_update   ss    NN6"

T'--/2%)XXtzz$:  <dhhZ'+zzl  4	r3   c                 0     X   $ ! [          a    Us $ f = frF   r^   r)   r&   defaults      r0   getKeyValue.get   s#    	9 	N	s    c                 8     X   $ ! [          a	    X U'   Us $ f = frF   r   r   s      r0   
setdefaultKeyValue.setdefault   s*    	9 	IN	s    c                     U R                   R                  5           X   nX	 S S S 5        U$ ! [         a    U[        L a  e Us sS S S 5        $ f = f! , (       d  f       W$ = frF   )r   atomicr^   r	   )r)   r&   r   rc   s       r0   popKeyValue.pop   sj    ^^""$
 	 %   h& %$ %$ s+   A-AAAAA
A!c                 T    U R                   R                  5       R                  5         g rF   )r%   rw   rk   rA   s    r0   clearKeyValue.clear   s    

##%r3   )
r   r   r   r   r   r&   r%   r!   r   r'   )NNFNkeyvaluerF   )r<   r=   r>   r?   __doc__r1   r$   rJ   rN   rT   rX   rd   r"   r   rt   rx   r}   r   r   r   r#   r    r   r   r	   r   r   r@   r;   r3   r0   r   r      s     BG+5"@
8	%7,AC,  ( 
&r3   r   )r\   peeweer   r   playhouse.fieldsr   playhouse.sqlite_extr   r   ImportErrortypeobjectr	   r   r;   r3   r0   <module>r      sP        (7L
 
VIr*`&v `&  767s   : A	A	