
    & jm                        S r 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SKJ
r  SS	KJr  SS
KJr  SSKJr   " S S\5      rS r " S S\5      r " S S\5      r " S S\5      r " S S\	5      r " S S\5      r
g)an  
Peewee integration with APSW, "another python sqlite wrapper".

Project page: https://rogerbinns.github.io/apsw/

APSW is a really neat library that provides a thin wrapper on top of SQLite's
C interface.

Here are just a few reasons to use APSW, taken from the documentation:

* APSW gives all functionality of SQLite, including virtual tables, virtual
  file system, blob i/o, backups and file control.
* Connections can be shared across threads without any additional locking.
* Transactions are managed explicitly by your code.
* APSW can handle nested transactions.
* Unicode is handled correctly.
* APSW is faster.
    N)*)__exception_wrapper__)BooleanField)	DateField)DateTimeField)DecimalField)Insert)	TimeField)loggerc                      ^  \ rS rSr\" S \R                  " 5       R                  S5       5       5      rU 4S jr	S r
S rS rU 4S jrS	 rS
 rS rS rS rS rSS jrS rSS jrS rS rSrU =r$ )APSWDatabase   c              #   8   #    U  H  n[        U5      v   M     g 7fN)int).0is     c/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/playhouse/apsw_ext.py	<genexpr>APSWDatabase.<genexpr>    s     N+Ma3q66+Ms   .c                 >   > 0 U l         [        [        U ]  " U40 UD6  g r   )_modulessuperr   __init__)selfdatabasekwargs	__class__s      r   r   APSWDatabase.__init__"   s    lD*8>v>    c                     X R                   U'   U R                  5       (       d   U R                  5       R                  X5        g g r   )r   	is_closed
connectioncreatemodule)r   mod_namemod_insts      r   register_moduleAPSWDatabase.register_module&   s5    "*h~~OO**8>  r!   c                     U R                   U	 g r   r   )r   r&   s     r   unregister_moduleAPSWDatabase.unregister_module+   s    MM(#r!   c                    [         R                  " U R                  40 U R                  D6nU R                  b  UR                  U R                  S-  5         U R                  U5        U$ !   UR                  5         e = f)Ni  )apsw
Connectionr   connect_params_timeoutsetbusytimeout_add_conn_hooksclose)r   conns     r   _connectAPSWDatabase._connect.   sm    t}}D0C0CD==$ 45	  & 	JJLs   A+ +A>c                 N   > [         [        U ]  U5        U R                  U5        g r   )r   r   r4   _load_modules)r   r6   r   s     r   r4   APSWDatabase._add_conn_hooks9   s     lD1$74 r!   c                 n    U R                   R                  5        H  u  p#UR                  X#5        M     U$ r   )r   itemsr%   )r   r6   r&   r'   s       r   r:   APSWDatabase._load_modules=   s/    "&--"5"5"7Hh1 #8r!   c                    ^ U R                   R                  5        H   u  nu  mnU4S jnUR                  X$5        M"     g )Nc                  @   > T " 5       T R                   T R                  4$ r   )stepfinalize)klasss   r   make_aggregate5APSWDatabase._load_aggregates.<locals>.make_aggregateD   s    U^^<<r!   )_aggregatesr=   createaggregatefunction)r   r6   name
num_paramsrD   rC   s        @r   _load_aggregatesAPSWDatabase._load_aggregatesB   s:    )-)9)9)?)?)A%D%5*=((> *Br!   c                 l    U R                   R                  5        H  u  p#UR                  X#5        M     g r   )_collationsr=   createcollation)r   r6   rH   fns       r   _load_collationsAPSWDatabase._load_collationsH   s+    ((..0HD  * 1r!   c                     U R                   R                  5        H)  u  nu  p4nU(       a  U4OSnUR                  " X#U/UQ76   M+     g )N )
_functionsr=   createscalarfunction)r   r6   rH   rO   rI   deterministicargss          r   _load_functionsAPSWDatabase._load_functionsL   sE    59__5J5J5L1D12='4M#"D%%d
BTB 6Mr!   c                 n    UR                  S5        U R                   H  nUR                  U5        M     g NT)enableloadextension_extensionsloadextension)r   r6   	extensions      r   _load_extensionsAPSWDatabase._load_extensionsQ   s.      &))Iy) *r!   c                     U R                   R                  U5        U R                  5       (       d3  U R                  5       nUR	                  S5        UR                  U5        g g r[   )r]   addr#   r$   r\   r^   )r   r_   r6   s      r   load_extensionAPSWDatabase.load_extensionV   sP    Y'~~??$D$$T*y)  r!   c                     U R                   (       d  UR                  R                  5       $ U[        R                  :X  a	   US   S   $ U$ ! [
        [        [        4 a     U$ f = f)Nr   )returning_clauser$   last_insert_rowidr	   SIMPLEAttributeError
IndexError	TypeError)r   cursor
query_types      r   last_insert_idAPSWDatabase.last_insert_id]   sf    $$$$66886==(ay|#  #J	: s   A A$#A$c                      UR                   R                  5       $ ! [         a'    UR                  R                   R                  5       s $ f = fr   )r$   changesrj   rm   )r   rm   s     r   rows_affectedAPSWDatabase.rows_affectedg   sD    	6$$,,.. 	6==++3355	6s    .AAc                 H    U R                  5       R                  SU-  5        g )Nz	begin %s;)rm   execute)r   	lock_types     r   beginAPSWDatabase.beginm   s    kI56r!   c                     [            U R                  5       nUR                  R                  5       (       a
   S S S 5        gUR	                  S5        S S S 5        g! , (       d  f       g= f)NFzcommit;Tr   rm   r$   getautocommitrv   r   curss     r   commitAPSWDatabase.commitp   sT    ";;=D,,.. #" LL#	 #
  #"
    1AA
A)c                     [            U R                  5       nUR                  R                  5       (       a
   S S S 5        gUR	                  S5        S S S 5        g! , (       d  f       g= f)NFz	rollback;Tr{   r}   s     r   rollbackAPSWDatabase.rollbackx   sT    ";;=D,,.. #" LL%	 #
  #"
 r   r+   r   )deferred)__name__
__module____qualname____firstlineno__tupler/   sqlitelibversionsplitserver_versionr   r(   r,   r7   r4   r:   rJ   rP   rX   r`   rd   ro   rs   rx   r   r   __static_attributes____classcell__r   s   @r   r   r      s}    N4+@+@+B+H+H+MNNN??
%	!
?+C
*
*67 r!   r   c                      Ub  [        U5      $ g r   )str)svs     r   nhr      s    }1v r!   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )r      c                 Z   > [         [        U ]  U5      nUb  U=(       a    S=(       d    S$ g )N   r   )r   r   db_value)r   r   r   s     r   r   BooleanField.db_value   s,    ,.q1=7<a r!   rS   )r   r   r   r   r   r   r   r   s   @r   r   r      s       r!   r   c                       \ rS rSr\rSrg)r      rS   Nr   r   r   r   r   r   r   rS   r!   r   r   r          Hr!   r   c                       \ rS rSr\rSrg)r
      rS   Nr   rS   r!   r   r
   r
      r   r!   r
   c                       \ rS rSr\rSrg)r      rS   Nr   rS   r!   r   r   r      r   r!   r   c                       \ rS rSr\rSrg)r      rS   Nr   rS   r!   r   r   r      r   r!   r   )__doc__r/   peeweer   r   _BooleanFieldr   
_DateFieldr   _DateTimeFieldr   _DecimalFieldr	   r
   
_TimeFieldr   SqliteDatabaser   r   rS   r!   r   <module>r      sz   $   ( 0 * 2 0  * _> _D =  
 
 N = r!   