+
    Tj                         R t ^ RIHtHt ^ RIHt  ! R R]4      t ! R R]4      t ! R R]4      t ! R	 R
]4      t	 ! R R]4      t
 ! R R]4      tR# )z;Database functions that do comparisons or type conversions.)FuncValue)_lazy_re_compilec                   n   a a ] tR t^t oRtRtRtV 3R ltV 3R ltV 3R lt	R t
R tV 3R	 ltR
tVtV ;t# )Castz)Coerce an expression to a new field type.CASTz,%(function)s(%(expressions)s AS %(db_type)s)c                (   < \         SV `  WR 7       R# ))output_fieldN)super__init__)self
expressionr	   	__class__s   &&&Z/var/www/idalgo/venv/lib/python3.14/site-packages/django/db/models/functions/comparison.pyr   Cast.__init__   s    ?    c                b   < V P                   P                  V4      VR &   \        SV `  ! W3/ VB # )db_type)r	   cast_db_typer
   as_sqlr   compiler
connectionextra_contextr   s   &&&,r   r   Cast.as_sql   s2    #'#4#4#A#A*#Mi w~hDmDDr   c                   < V P                   P                  V4      pVR9   d,   Rp\        S	V `  ! W3RV/VB w  rgVR8X  d   RMRpV.VO5pWg3# VR8X  d   Rp\        S	V `  ! W3RV/VB # V P                  ! W3/ VB # )	datetimetimezstrftime(%%s, %(expressions)s)templatez%H:%M:%fz%Y-%m-%d %H:%M:%fdatezdate(%(expressions)s)>   r   r   )r	   r   r
   r   )
r   r   r   r   r   r   sqlparamsformat_stringr   s
   &&&,     r   	as_sqliteCast.as_sqlite   s    ##++J7**7H'./7;HKC +2V*;JATM#-f-F;.H7>/7;H  {{8A=AAr   c                    R pV P                   P                  4       pVR8X  d   RpMVR8X  d   VP                  '       d   RpV P                  ! W3RV/VB # )N
FloatFieldz(%(expressions)s + 0.0)	JSONFieldz"JSON_EXTRACT(%(expressions)s, '$')r   )r	   get_internal_typemysql_is_mariadbr   )r   r   r   r   r   output_types   &&&,  r   as_mysqlCast.as_mysql&   sY    ''99;,&0HK'J,G,G,G;H{{8T(TmTTr   c                .    V P                   ! VV3R R/VB # )r   z(%(expressions)s)::%(db_type)s)r   )r   r   r   r   s   &&&,r   as_postgresqlCast.as_postgresql1   s/     {{
 6
 	
 	
r   c                   < V P                   P                  4       R 8X  d   Rp\        SV `  ! W3RV/VB # V P                  ! W3/ VB # )r'   z JSON_QUERY(%(expressions)s, '$')r   )r	   r(   r
   r   )r   r   r   r   r   r   s   &&&, r   	as_oracleCast.as_oracle<   sY    ..0K?9H7>/7;H  {{8A=AAr    )__name__
__module____qualname____firstlineno____doc__functionr   r   r   r#   r+   r.   r1   __static_attributes____classdictcell____classcell__r   __classdict__s   @@r   r   r      s;     3H=H@EB$	U	
B Br   r   c                   V   a a ] tR t^Ft oRtRtV 3R lt]R 4       tV 3R lt	Rt
VtV ;t# )Coalescez:Return, from left to right, the first non-null expression.COALESCEc                ^   < \        V4      ^8  d   \        R4      h\        SV `  ! V/ VB  R# )   z+Coalesce must take at least two expressionsNlen
ValueErrorr
   r   r   expressionsextrar   s   &*,r   r   Coalesce.__init__K   .    {aJKK+//r   c                p    V P                  4        F!  pVP                  pV\        J g   Vf   K  Vu # 	  R # )N)get_source_expressionsempty_result_set_valueNotImplemented)r   r   results   &  r   rN   Coalesce.empty_result_set_valueP   s7    557J66F'6+= 8 r   c           
     0  < V P                   P                  4       R 8X  d`   V P                  4       pTP                  V P	                  4        Uu. uF  p\        VRR7      NK  	  up4       \        \        V`"  ! W3/ VB # V P                  ! W3/ VB # u upi )	TextFieldTO_NCLOB)r9   )	r	   r(   copyset_source_expressionsrM   r   r
   r@   r   )r   r   r   r   cloner   r   s   &&&,  r   r1   Coalesce.as_oracleX   s     ..0K?IIKE(( '+&A&A&C&C
 j9&C 50WWW{{8A=AAs   Br3   )r4   r5   r6   r7   r8   r9   r   propertyrN   r1   r:   r;   r<   r=   s   @@r   r@   r@   F   s2     DH0
  B Br   r@   c                   Z   a a ] tR t^gt oRtRtRt]! R4      tV 3R lt	V 3R lt
RtVtV ;t# )CollateCOLLATEz*%(expressions)s %(function)s %(collation)sFz^[\w-]+$c                   < V'       d"   V P                   P                  V4      '       g   \        R V,          4      hW n        \        SV `  V4       R# )zInvalid collation name: %r.N)collation_rematchrF   	collationr
   r   )r   r   r`   r   s   &&&r   r   Collate.__init__o   s?    d//55i@@:YFGG"$r   c                   < VP                  R VP                  P                  V P                  4      4       \        SV `  ! W3/ VB # r`   )
setdefaultops
quote_namer`   r
   r   r   s   &&&,r   r   Collate.as_sqlu   s:      jnn.G.G.WXw~hDmDDr   rc   )r4   r5   r6   r7   r9   r   allowed_defaultr   r^   r   r   r:   r;   r<   r=   s   @@r   r[   r[   g   s1     H;HO $K0L%E Er   r[   c                   F   a a ] tR t^zt oRtRtV 3R ltV 3R ltRtVt	V ;t
# )Greatestz
Return the maximum expression.

If any expression is null the return value is database-specific:
On PostgreSQL, the maximum not-null expression is returned.
On MySQL, Oracle, and SQLite, if any expression is null, null is returned.
GREATESTc                ^   < \        V4      ^8  d   \        R4      h\        SV `  ! V/ VB  R# )rC   z+Greatest must take at least two expressionsNrD   rG   s   &*,r   r   Greatest.__init__   rK   r   c                *   < \         SV `  ! W3RR/VB # )zUse the MAX function on SQLite.r9   MAXr
   r#   r   s   &&&,r   r#   Greatest.as_sqlite       w WWWWr   r3   r4   r5   r6   r7   r8   r9   r   r#   r:   r;   r<   r=   s   @@r   rj   rj   z   s"      H0
X Xr   rj   c                   F   a a ] tR t^t oRtRtV 3R ltV 3R ltRtVt	V ;t
# )Leastz
Return the minimum expression.

If any expression is null the return value is database-specific:
On PostgreSQL, return the minimum not-null expression.
On MySQL, Oracle, and SQLite, if any expression is null, return null.
LEASTc                ^   < \        V4      ^8  d   \        R4      h\        SV `  ! V/ VB  R# )rC   z(Least must take at least two expressionsNrD   rG   s   &*,r   r   Least.__init__   s.    {aGHH+//r   c                *   < \         SV `  ! W3RR/VB # )zUse the MIN function on SQLite.r9   MINrp   r   s   &&&,r   r#   Least.as_sqlite   rr   r   r3   rs   r=   s   @@r   ru   ru      s"      H0
X Xr   ru   c                   :   a a ] tR t^t oRt^tV 3R ltRtVtV ;t	# )NullIfNULLIFc                   < V P                  4       ^ ,          p\        V\        4      '       d   VP                  f   \	        R4      h\
        SV `  ! W3/ VB # )    z2Oracle does not allow Value(None) for expression1.)rM   
isinstancer   valuerF   r
   r   )r   r   r   r   expression1r   s   &&&, r   r1   NullIf.as_oracle   sN    113A6k5))k.?.?.GQRRw~hDmDDr   r3   )
r4   r5   r6   r7   r9   arityr1   r:   r;   r<   r=   s   @@r   r}   r}      s     HEE Er   r}   N)r8   django.db.models.expressionsr   r   django.utils.regex_helperr   r   r@   r[   rj   ru   r}   r3   r   r   <module>r      sd    A 4 6<B4 <B~Bt BBEd E&Xt X*XD X*ET Er   