+
    TjF@                         ^ RI t ^ RIt^ RIt^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
 ^ RIHtHtHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHtHtHt ^ RIHt ^RIHt  ! R R]4      tR# )    N)	lru_cache)chain)settings)
FieldError)DatabaseErrorNotSupportedErrormodels)BaseDatabaseOperations)
OnConflict)Col)timezone)
parse_dateparse_datetime
parse_time)cached_property)Databasec                   r  a a ] tR t^t oRtRRRR/tRt]! . R0O4      tR t	R t
R tR	 tR1R
 ltR1R ltR tR tR tR tR tR tR tR tR tR tR tR t]R 4       tRRRR/R ltR tR tR t V 3R  lt!R! t"R" t#R# t$R$ t%R% t&R& t'V 3R' lt(R( t)R) t*R* t+R1V 3R+ llt,V 3R, lt-R- t.V 3R. lt/R/t0Vt1V ;t2# )2DatabaseOperationstext	DateFieldTEXTDateTimeFieldzEXPLAIN QUERY PLANc                    \        \        P                  ! R V 4       4      4      pV'       d1   V P                  P                  P
                  \        V4      ,          # \        V4      # )zf
SQLite has a variable limit defined by SQLITE_LIMIT_VARIABLE_NUMBER
(reflected in max_query_params).
c              3      "   T F4  p\        V\        P                  4      '       d   VP                  MV.x  K6  	  R # 5iN)
isinstancer	   CompositePrimaryKeyfields).0fields   & Z/var/www/idalgo/venv/lib/python3.14/site-packages/django/db/backends/sqlite3/operations.py	<genexpr>5DatabaseOperations.bulk_batch_size.<locals>.<genexpr>%   s>        $E "%)C)CDD LL! $s   <>)listr   from_iterable
connectionfeaturesmax_query_paramslen)selfr   objss   &&&r!   bulk_batch_size"DatabaseOperations.bulk_batch_size   sY    
    $  	
 ??++<<FKKt9    c                h   \         P                  \         P                  \         P                  3p\         P                  \         P
                  \         P                  \         P                  3p\        W4      '       dA   VP                  4        F,  p VP                  p\        WR4      '       d   \        R 4      hK.  	  \        V\         P                  4      '       d<   VP                  '       d(   \!        VP"                  4      ^8  d   \        R4      hR# R# R#   \        \        3 d     K  i ; i)z{You cannot use Sum, Avg, StdDev, and Variance aggregations on date/time fields in sqlite3 since date/time is saved as text.zTSQLite doesn't support DISTINCT on aggregate functions accepting multiple arguments.N)r	   r   r   	TimeFieldSumAvgVarianceStdDevr   get_source_expressionsoutput_fieldr   AttributeErrorr   	Aggregatedistinctr)   source_expressions)r*   
expression
bad_fieldsbad_aggregatesexprr6   s   &&    r!   check_expression_support+DatabaseOperations.check_expression_support3   s   &&(<(<f>N>NO
 **fjj&//6==Qj11"99;#'#4#4L ",;;/@  < < z6#3#344###J112Q6#0  7 $ 5 '
3  s   DD10D1c                6    RV R2VP                  4       .VO53# )z
Support EXTRACT with a user-defined function django_date_extract()
that's registered in connect(). Use single quotes because this is a
string and could otherwise cause a collision with a field name.
zdjango_date_extract(%s, )lowerr*   lookup_typesqlparamss   &&&&r!   date_extract_sql#DatabaseOperations.date_extract_sqlO   s)     *#a0;3D3D3F2P2PPPr.   c                    V# )z>Do nothing since formatting is handled in the custom function. )r*   rG   s   &&r!   format_for_duration_arithmetic1DatabaseOperations.format_for_duration_arithmeticW   s    
r.   c                X    R V R2VP                  4       .VOV P                  V4      O53# )zdjango_date_trunc(%s, 	, %s, %s)rD   _convert_tznames_to_sqlr*   rF   rG   rH   tznames   &&&&&r!   date_trunc_sql!DatabaseOperations.date_trunc_sql[   F    'uI69
9
 ))&19
 
 	
r.   c                X    R V R2VP                  4       .VOV P                  V4      O53# )zdjango_time_trunc(%s, rP   rQ   rS   s   &&&&&r!   time_trunc_sql!DatabaseOperations.time_trunc_sqlb   rW   r.   c                p    V'       d.   \         P                  '       d   WP                  P                  3# R# )N)NN)r   USE_TZr&   timezone_name)r*   rT   s   &&r!   rR   *DatabaseOperations._convert_tznames_to_sqli   s&    hooo??8888r.   c                :    R V R2. VOV P                  V4      O53# )zdjango_datetime_cast_date(rP   rR   r*   rG   rH   rT   s   &&&&r!   datetime_cast_date_sql)DatabaseOperations.datetime_cast_date_sqln   8    +C5	: =
=
))&1=
 
 	
r.   c                :    R V R2. VOV P                  V4      O53# )zdjango_datetime_cast_time(rP   r`   ra   s   &&&&r!   datetime_cast_time_sql)DatabaseOperations.datetime_cast_time_sqlt   rd   r.   c                X    R V R2VP                  4       .VOV P                  V4      O53# )zdjango_datetime_extract(%s, rP   rQ   rS   s   &&&&&r!   datetime_extract_sql'DatabaseOperations.datetime_extract_sqlz   sF    -cU)<?
?
 ))&1?
 
 	
r.   c                X    R V R2VP                  4       .VOV P                  V4      O53# )zdjango_datetime_trunc(%s, rP   rQ   rS   s   &&&&&r!   datetime_trunc_sql%DatabaseOperations.datetime_trunc_sql   sF    +C5	:=
=
 ))&1=
 
 	
r.   c                6    R V R2VP                  4       .VO53# )zdjango_time_extract(%s, rB   rC   rE   s   &&&&r!   time_extract_sql#DatabaseOperations.time_extract_sql   s'    )#a0;3D3D3F2P2PPPr.   c                    R # )NULLrL   r*   s   &r!   pk_default_value#DatabaseOperations.pk_default_value   s    r.   c                   Rp\        V4      V8  dC   Rp\        ^ \        V4      V4       F$  pWWB,            pW0P                  V4      ,          pK&  	  V# RRP                  R.\        V4      ,          4      ,           pV P                  P                  P                  4       p VP                  Wa4      P                  4       VP                  4        #   TP                  4        i ; i)zF
Only for last_executed_query! Don't use this to execute SQL queries!
i  zSELECT , zQUOTE(?)rL   )	r)   range%_quote_params_for_last_executed_queryjoinr&   cursorexecutefetchoneclose)r*   rH   
BATCH_SIZEresultsindexchunkrG   r{   s   &&      r!   ry   8DatabaseOperations._quote_params_for_last_executed_query   s     
v;#Gq#f+z:u'9:EEeLL ; N$))ZL3v;$>?? ++224	>>#.779LLNFLLNs   #C C$c                   V'       d|   \        V\        \        34      '       d   V P                  V4      pW#,          # \        VP	                  4       4      pV P                  V4      p\        \        W44      4      pW#,          # V# r   )r   r$   tuplery   valuesdictzip)r*   r{   rG   rH   r   s   &&&& r!   last_executed_query&DatabaseOperations.last_executed_query   sr    
 &4-00CCFK
 < v}}/CCFKc&12< Jr.   c                t    VP                  R 4      '       d   VP                  R 4      '       d   V# RV,          # )"z"%s")
startswithendswith)r*   names   &&r!   
quote_nameDatabaseOperations.quote_name   s.    ??3DMM#$6$6K}r.   c                    R# )   rL   rs   s   &r!   no_limit_value!DatabaseOperations.no_limit_value   s    	r.   c                
   R pVRR3pV P                   P                  4       ;_uu_ 4       pVP                  W#4      pVP                  4        Uu. uF  qf^ ,          NK  	  upuuRRR4       # u upi   + '       g   i     R# ; i)z
        WITH tables AS (
            SELECT %s name
            UNION
            SELECT sqlite_master.name
            FROM sqlite_master
            JOIN tables ON (sql REGEXP %s || tables.name || %s)
        ) SELECT name FROM tables;
        z(?i)\s+references\s+("|\')?z("|\')?\s*\(N)r&   r{   r|   fetchall)r*   
table_namequeryrH   r{   r   rows   &&     r!   __references_graph%DatabaseOperations.__references_graph   sx     *

 __##%%nnU3G&-&6&6&89&8sFF&89 &%9 &%%s   $A1A,A1,A11B	c                :    \        R R7      ! V P                  4      # )i   )maxsize)r   %_DatabaseOperations__references_graphrs   s   &r!   _references_graph$DatabaseOperations._references_graph   s     %d&=&=>>r.   reset_sequencesFallow_cascadec                 a  V'       d2   V'       d*   \        \        P                  ! V 3R  lV 4       4      4      pV Uu. uFM  pVP                  R4      : RVP                  R4      : RVP	                  S P                  V4      4      : R2NKO  	  ppV'       d4   V Uu. uF  pRV/NK	  	  ppVP                  S P                  W4      4       V# u upi u upi )c              3   F   <"   T F  pSP                  V4      x  K  	  R # 5ir   )r   )r   tabler*   s   & r!   r"   /DatabaseOperations.sql_flush.<locals>.<genexpr>   s     #VveD$:$:5$A$Avs   !DELETE FROM;r   )setr   r%   SQL_KEYWORD	SQL_FIELDr   extendsequence_reset_by_name_sql)r*   styletablesr   r   r   rG   	sequencess   f&&$$   r!   	sql_flushDatabaseOperations.sql_flush   s    m ###Vv#VVF  
  	 !!(+!!&) 67	   	 
 7=>ve'5)vI>JJt66uHI

 ?s   AC Cc                   V'       g   . # VP                  R 4      : RVP                  V P                  R4      4      : RVP                  R4      : RVP                  V P                  R4      4      : RVP                  R4      : RVP                  V P                  R4      4      : RVP                  R4      : R	R
P	                  V Uu. uF  pRVR,          ,          NK  	  up4      : R2.# u upi )UPDATEr   sqlite_sequenceSETseqz = 0 WHEREr   INz (rw   '%s'r   z);)r   	SQL_TABLEr   r   rz   )r*   r   r   sequence_infos   &&& r!   r   -DatabaseOperations.sequence_reset_by_name_sql   s    I !!(+0A BC!!%( 67!!'* 78!!$'		JST)VmG444)T
 	
 Us   C1$c                    Vf   R # \         P                  ! V4      '       dM   \        P                  '       d,   \         P                  ! WP
                  P                   4      pM\        R4      h\        V4      # )NzNSQLite backend does not support timezone-aware datetimes when USE_TZ is False.)r   is_awarer   r\   
make_naiver&   
ValueErrorstrr*   values   &&r!   adapt_datetimefield_value,DatabaseOperations.adapt_datetimefield_value  s^    = U## ++E??3K3KL ' 
 5zr.   c                r    Vf   R # \         P                  ! V4      '       d   \        R4      h\        V4      # )Nz5SQLite backend does not support timezone-aware times.)r   r   r   r   r   s   &&r!   adapt_timefield_value(DatabaseOperations.adapt_timefield_value  s3    = U##TUU5zr.   c                  < \         SV `  V4      pVP                  P                  4       pVR 8X  d   VP	                  V P
                  4       V# VR8X  d   VP	                  V P                  4       V# VR8X  d   VP	                  V P                  4       V# VR8X  d#   VP	                  V P                  V4      4       V# VR8X  d   VP	                  V P                  4       V# VR8X  d   VP	                  V P                  4       V# )r   r   r0   DecimalField	UUIDFieldBooleanField)superget_db_convertersr6   get_internal_typeappendconvert_datetimefield_valueconvert_datefield_valueconvert_timefield_valueget_decimalfield_converterconvert_uuidfield_valueconvert_booleanfield_value)r*   r;   
convertersinternal_type	__class__s   &&  r!   r   $DatabaseOperations.get_db_converters  s   W.z:
"//AACO+d>>?  k)d::;  k)d::;  n,d==jIJ
 	 k)d::;  n,d==>r.   c                   Ve   \        V\        P                  4      '       g   \        V4      p\        P                  '       dG   \
        P                  ! V4      '       g+   \
        P                  ! WP                  P
                  4      pV# r   )	r   datetimer   r   r\   r   r   
make_awarer&   r*   r   r;   r&   s   &&&&r!   r   .DatabaseOperations.convert_datetimefield_value/  s]    eX%6%677&u-x'8'8'?'? ++E??3K3KLr.   c                d    Ve,   \        V\        P                  4      '       g   \        V4      pV# r   )r   r   dater   r   s   &&&&r!   r   *DatabaseOperations.convert_datefield_value7  (    eX]]33"5)r.   c                d    Ve,   \        V\        P                  4      '       g   \        V4      pV# r   )r   r   timer   r   s   &&&&r!   r   *DatabaseOperations.convert_timefield_value=  r   r.   c                
  aa \         P                  ! ^R7      P                  o\        V\        4      '       dD   \         P
                  ! ^4      P                  VP                  P                  ) 4      oVV3R lpV# V3R lpV# )   )precc                 j   < V e.   S! V 4      P                  SVP                  P                  R7      # R # )N)context)quantizer6   r   )r   r;   r&   create_decimalquantize_values   &&&r!   	converter@DatabaseOperations.get_decimalfield_converter.<locals>.converterL  s<    $)%099&
0G0G0O0O :   %r.   c                     < V e	   S! V 4      # R # r   rL   )r   r;   r&   r   s   &&&r!   r   r   T  s    $)%00 %r.   )	decimalContextcreate_decimal_from_floatr   r   Decimalscalebr6   decimal_places)r*   r;   r   r   r   s   && @@r!   r   -DatabaseOperations.get_decimalfield_converterC  sk     !b1KKj#&&$__Q/66((777N 	1 r.   c                :    Ve   \         P                  ! V4      pV# r   )uuidUUIDr   s   &&&&r!   r   *DatabaseOperations.convert_uuidfield_valueZ  s    IIe$Er.   c                *    VR9   d   \        V4      # T# )r   )r   r   )boolr   s   &&&&r!   r   -DatabaseOperations.convert_booleanfield_value_  s    #votE{858r.   c                   < VR 8X  d   RRP                  V4      ,          # VR8X  d   RRP                  V4      ,          # \        SV `	  W4      # )^z	POWER(%s),#z
BITXOR(%s))rz   r   combine_expression)r*   	connectorsub_expressionsr   s   &&&r!   r	  %DatabaseOperations.combine_expressionb  sM     /!:::##((?";;;w))EEr.   c                    VR9  d   \        RV,          4      hRV,          .VOp\        V4      ^8  d   \        R4      hRRP                  V4      ,          # )+z$Invalid connector for timedelta: %s.r   z)Too many params for timedelta operations.zdjango_format_dtdelta(%s)rw   )r  -*/)r   r)   r   rz   )r*   r
  r  	fn_paramss   &&& r!   combine_duration_expression.DatabaseOperations.combine_duration_expressionk  sZ    00 F RSSi':/:	y>AHII*TYYy-AAAr.   c                    VR9   d   R# R# )PositiveBigIntegerField)r  PositiveIntegerFieldPositiveSmallIntegerField)r       )l         r  rL   )r*   r   s   &&r!   integer_field_range&DatabaseOperations.integer_field_ranges  s      
 

 ,+::r.   c                b    Vw  rEVw  rg. VOVO5pVR 8X  d   RV: RV: R2V3# RV: RV: R2V3# )r0   zdjango_time_diff(rw   rB   zdjango_timestamp_diff(rL   )	r*   r   lhsrhslhs_sql
lhs_paramsrhs_sql
rhs_paramsrH   s	   &&&&     r!   subtract_temporals%DatabaseOperations.subtract_temporals~  sN    !!+:+
+K'18'BFJJ (297CVKKr.   c                R   < V\         P                  8X  d   R # \        SV `  VR7      # )zINSERT OR IGNORE INTO)on_conflict)r   IGNOREr   insert_statement)r*   r&  r   s   &&r!   r(  #DatabaseOperations.insert_statement  s'    *+++*w'K'@@r.   c                r  < V\         P                  8X  d   V P                  P                  P                  '       df   R RP                  \        V P                  V4      4      : RRP                  \        V P                  V4       Uu. uF
  pV RV 2NK  	  up4      : 2# \        SV `%  VVVV4      # u upi )zON CONFLICT(rw   z) DO UPDATE SET z = EXCLUDED.)
r   r   r&   r'   %supports_update_conflicts_with_targetrz   mapr   r   on_conflict_suffix_sql)r*   r   r&  update_fieldsunique_fieldsr    r   s   &&&&& r!   r-  )DatabaseOperations.on_conflict_suffix_sql  s    :,,,((NNN 		#doo}=>		 &)-%H%HE !'eW5%H  w-	
 	
s   B4c                6    \         P                  R8  d   R.# . # )   zGROUP BY TRUE)r2  '   )r   sqlite_version_infors   s   &r!   force_group_by!DatabaseOperations.force_group_by  s    $,$@$@7$J RPRRr.   c                B   < V^ 8  d
   RV,          # \         SV `  V4      # )r   z[#%s])r   format_json_path_numeric_index)r*   numr   s   &&r!   r8  1DatabaseOperations.format_json_path_numeric_index  s#     #aw}XUW-STW-XXr.   rL   )nullfalsetruer   )3__name__
__module____qualname____firstlineno__"cast_char_field_without_max_lengthcast_data_typesexplain_prefix	frozensetjsonfield_datatype_valuesr,   r?   rI   rM   rU   rY   rR   rb   rf   ri   rl   ro   rt   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r  r  r#  r(  r-  r5  r8  __static_attributes____classdictcell____classcell__)r   __classdict__s   @@r!   r   r      s    )/&VO *N !**C D(8Q






Q6$
:& ? ?
% u *
& ".
9FB	;LA

*SY Yr.   r   ) r   r   r   	functoolsr   	itertoolsr   django.confr   django.core.exceptionsr   	django.dbr   r   r	   "django.db.backends.base.operationsr
   django.db.models.constantsr   django.db.models.expressionsr   django.utilsr   django.utils.dateparser   r   r   django.utils.functionalr   baser   r   rL   r.   r!   <module>rW     sI           - > > E 1 , ! I I 3 PY/ PYr.   