Ë
    ¦#ijF@  ã                   óÒ   — d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZmZ d dlmZ ddlmZ  G d„ de«      Zy)é    N)Ú	lru_cache)Úchain)Úsettings)Ú
FieldError)ÚDatabaseErrorÚNotSupportedErrorÚmodels)ÚBaseDatabaseOperations)Ú
OnConflict)ÚCol)Útimezone)Ú
parse_dateÚparse_datetimeÚ
parse_time)Úcached_propertyé   )ÚDatabasec                   óJ  ‡ — e Zd ZdZdddœZdZ eg d¢«      Zd„ Zd„ Z	d„ Z
d	„ Zd.d
„Zd.d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zdddœd„Zd„ Zd„ Zd„ Zˆ fd„Z d „ Z!d!„ Z"d"„ Z#d#„ Z$d$„ Z%d%„ Z&ˆ fd&„Z'd'„ Z(d(„ Z)d)„ Z*d.ˆ fd*„	Z+ˆ fd+„Z,d,„ Z-ˆ fd-„Z.ˆ xZ/S )/ÚDatabaseOperationsÚtextÚTEXT)Ú	DateFieldÚDateTimeFieldzEXPLAIN QUERY PLAN)ÚnullÚfalseÚtruec                 ó¾   — t        t        j                  d„ |D «       «      «      }|r,| j                  j                  j
                  t        |«      z  S t        |«      S )z~
        SQLite has a variable limit defined by SQLITE_LIMIT_VARIABLE_NUMBER
        (reflected in max_query_params).
        c              3   ón   K  — | ]-  }t        |t        j                  «      r|j                  n|g–— Œ/ y ­w©N)Ú
isinstancer	   ÚCompositePrimaryKeyÚfields)Ú.0Úfields     ú_/var/www/html/office/venv/lib/python3.12/site-packages/django/db/backends/sqlite3/operations.pyú	<genexpr>z5DatabaseOperations.bulk_batch_size.<locals>.<genexpr>%   s:   è ø€ ò  ð ô " %¬×)CÑ)CÔDð —L’Là˜ó!ñ ùs   ‚35)Úlistr   Úfrom_iterableÚ
connectionÚfeaturesÚmax_query_paramsÚlen)Úselfr"   Úobjss      r%   Úbulk_batch_sizez"DatabaseOperations.bulk_batch_size   sY   € ô
 Ü×Ññ  ð $ô ó ó	
ˆñ Ø—?‘?×+Ñ+×<Ñ<ÄÀFÃÑKÐKä�t“9Ðó    c                 ó(  — t         j                  t         j                  t         j                  f}t         j                  t         j
                  t         j                  t         j                  f}t        ||«      r9|j                  «       D ]&  }	 |j                  }t        ||«      sŒt        d«      ‚ t        |t         j                  «      r1|j                  r$t!        |j"                  «      dkD  rt        d«      ‚y y y # t        t        f$ r Y Œ†w xY w)Nz{You cannot use Sum, Avg, StdDev, and Variance aggregations on date/time fields in sqlite3 since date/time is saved as text.r   zTSQLite doesn't support DISTINCT on aggregate functions accepting multiple arguments.)r	   r   r   Ú	TimeFieldÚSumÚAvgÚVarianceÚStdDevr    Úget_source_expressionsÚoutput_fieldr   ÚAttributeErrorr   Ú	AggregateÚdistinctr,   Úsource_expressions)r-   Ú
expressionÚ
bad_fieldsÚbad_aggregatesÚexprr8   s         r%   Úcheck_expression_supportz+DatabaseOperations.check_expression_support3   sù   € Ü×&Ñ&¬×(<Ñ(<¼f×>NÑ>NÐOˆ
Ü Ÿ*™*¤f§j¡j´&·/±/Ä6Ç=Á=ÐQˆÜ�j .Ô1Ø"×9Ñ9Ó;ò �ðØ#'×#4Ñ#4�Lô " ,°
Õ;Ü/ð@óð ðô �z¤6×#3Ñ#3Ô4Ø×#Ò#Ü�J×1Ñ1Ó2°QÒ6ä#ð0óð ð 7ð $ð 5øô '¬
Ð3ò ñ ðús   ÂC?Ã?DÄDc                 ó6   — d|› d�|j                  «       g|¢­fS )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_sqlz#DatabaseOperations.date_extract_sqlO   s)   € ð *¨#¨¨aÐ0°;×3DÑ3DÓ3FÐ2PÈÑ2PÐPÐPr0   c                 ó   — |S )z>Do nothing since formatting is handled in the custom function.© )r-   rH   s     r%   Úformat_for_duration_arithmeticz1DatabaseOperations.format_for_duration_arithmeticW   s   € àˆ
r0   c                 óX   — d|› d�|j                  «       g|¢| j                  |«      ¢­fS )Nzdjango_date_trunc(%s, ú	, %s, %s)©rE   Ú_convert_tznames_to_sql©r-   rG   rH   rI   Útznames        r%   Údate_trunc_sqlz!DatabaseOperations.date_trunc_sql[   óF   € Ø'¨ u¨IÐ6Ø×ÑÓð9
àð9
ð ×)Ñ)¨&Ó1ñ9
ð 
ð 	
r0   c                 óX   — d|› d�|j                  «       g|¢| j                  |«      ¢­fS )Nzdjango_time_trunc(%s, rO   rP   rR   s        r%   Útime_trunc_sqlz!DatabaseOperations.time_trunc_sqlb   rU   r0   c                 óX   — |r(t         j                  r|| j                  j                  fS y)N)NN)r   ÚUSE_TZr)   Útimezone_name)r-   rS   s     r%   rQ   z*DatabaseOperations._convert_tznames_to_sqli   s#   € Ù”h—o’oØ˜4Ÿ?™?×8Ñ8Ð8Ð8Ør0   c                 ó:   — d|› d�g |¢| j                  |«      ¢­fS )Nzdjango_datetime_cast_date(rO   ©rQ   ©r-   rH   rI   rS   s       r%   Údatetime_cast_date_sqlz)DatabaseOperations.datetime_cast_date_sqln   ó8   € Ø+¨C¨5°	Ð:ð =
Øð=
à×)Ñ)¨&Ó1ñ=
ð 
ð 	
r0   c                 ó:   — d|› d�g |¢| j                  |«      ¢­fS )Nzdjango_datetime_cast_time(rO   r\   r]   s       r%   Údatetime_cast_time_sqlz)DatabaseOperations.datetime_cast_time_sqlt   r_   r0   c                 óX   — d|› d�|j                  «       g|¢| j                  |«      ¢­fS )Nzdjango_datetime_extract(%s, rO   rP   rR   s        r%   Údatetime_extract_sqlz'DatabaseOperations.datetime_extract_sqlz   sF   € Ø-¨c¨U°)Ð<Ø×ÑÓð?
àð?
ð ×)Ñ)¨&Ó1ñ?
ð 
ð 	
r0   c                 óX   — d|› d�|j                  «       g|¢| j                  |«      ¢­fS )Nzdjango_datetime_trunc(%s, rO   rP   rR   s        r%   Údatetime_trunc_sqlz%DatabaseOperations.datetime_trunc_sql�   sF   € Ø+¨C¨5°	Ð:Ø×ÑÓð=
àð=
ð ×)Ñ)¨&Ó1ñ=
ð 
ð 	
r0   c                 ó6   — d|› d�|j                  «       g|¢­fS )Nzdjango_time_extract(%s, rC   rD   rF   s       r%   Útime_extract_sqlz#DatabaseOperations.time_extract_sqlˆ   s'   € Ø)¨#¨¨aÐ0°;×3DÑ3DÓ3FÐ2PÈÑ2PÐPÐPr0   c                  ó   — y)NÚNULLrL   ©r-   s    r%   Úpk_default_valuez#DatabaseOperations.pk_default_value‹   s   € Ør0   c                 ó®  — d}t        |«      |kD  r;d}t        dt        |«      |«      D ]  }||||z    }|| j                  |«      z  }Œ  |S ddj                  dgt        |«      z  «      z   }| j                  j                  j                  «       }	 |j                  ||«      j                  «       |j                  «        S # |j                  «        w xY w)zV
        Only for last_executed_query! Don't use this to execute SQL queries!
        iç  rL   r   zSELECT ú, zQUOTE(?))	r,   ÚrangeÚ%_quote_params_for_last_executed_queryÚjoinr)   ÚcursorÚexecuteÚfetchoneÚclose)r-   rI   Ú
BATCH_SIZEÚresultsÚindexÚchunkrH   rq   s           r%   ro   z8DatabaseOperations._quote_params_for_last_executed_queryŽ   sÌ   € ð ˆ
Üˆv‹;˜Ò#ØˆGÜ˜q¤# f£+¨zÓ:ò M�Ø˜u u¨zÑ'9Ð:�Ø˜4×EÑEÀeÓLÑL‘ðMð ˆNà˜$Ÿ)™) Z L´3°v³;Ñ$>Ó?Ñ?ˆð —‘×+Ñ+×2Ñ2Ó4ˆð	Ø—>‘> # vÓ.×7Ñ7Ó9à�L‰L�NøˆF�L‰L�Nús   ÂC ÃCc                 óê   — |rpt        |t        t        f«      r| j                  |«      }||z  S t        |j	                  «       «      }| j                  |«      }t        t        ||«      «      }||z  S |S r   )r    r'   Útuplero   ÚvaluesÚdictÚzip)r-   rq   rH   rI   r{   s        r%   Úlast_executed_queryz&DatabaseOperations.last_executed_query©   su   € ñ
 Ü˜&¤4¬ -Ô0Ø×CÑCÀFÓK�ð
 ˜‘<Ðô ˜vŸ}™}›Ó/�Ø×CÑCÀFÓK�Üœc &¨&Ó1Ó2�Ø˜‘<Ðð ˆJr0   c                 óT   — |j                  d«      r|j                  d«      r|S d|z  S )Nú"z"%s")Ú
startswithÚendswith)r-   Únames     r%   Ú
quote_namezDatabaseOperations.quote_name»   s(   € Ø�?‰?˜3Ô D§M¡M°#Ô$6ØˆKØ˜‰}Ðr0   c                  ó   — y)NéÿÿÿÿrL   rj   s    r%   Úno_limit_valuez!DatabaseOperations.no_limit_valueÀ   s   € Ør0   c                 óà   — d}|ddf}| j                   j                  «       5 }|j                  ||«      }|j                  «       D �cg c]  }|d   ‘Œ	 c}cd d d «       S c c}w # 1 sw Y   y xY w)Nz÷
        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*\(r   )r)   rq   rr   Úfetchall)r-   Ú
table_nameÚqueryrI   rq   rv   Úrows          r%   Ú__references_graphz%DatabaseOperations.__references_graphÃ   sw   € ðˆð Ø*Øð
ˆð
 �_‰_×#Ñ#Ó%ð 	:¨Ø—n‘n U¨FÓ3ˆGØ&-×&6Ñ&6Ó&8Ö9˜s�C˜“FÒ9÷	:ñ 	:ùâ9÷	:ð 	:ús   ¢%A$ÁAÁA$ÁA$Á$A-c                 ó:   —  t        d¬«      | j                  «      S )Ni   )Úmaxsize)r   Ú%_DatabaseOperations__references_graphrj   s    r%   Ú_references_graphz$DatabaseOperations._references_graphÖ   s   € ð &Œy Ô% d×&=Ñ&=Ó>Ð>r0   F)Úreset_sequencesÚallow_cascadec                ó‚  ‡ — |r)|r't        t        j                  ˆ fd„|D «       «      «      }|D �cg c]I  }|j                  d«      ›d|j                  d«      ›d|j	                  ‰ j                  |«      «      ›d�‘ŒK }}|r2|D �cg c]  }d|i‘Œ }}|j                  ‰ j                  ||«      «       |S c c}w c c}w )Nc              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr   )r‘   )r#   Útabler-   s     €r%   r&   z/DatabaseOperations.sql_flush.<locals>.<genexpr>á   s   øè ø€ Ò#VÀe D×$:Ñ$:¸5×$AÑ#Vùs   ƒÚDELETEú ÚFROMú;r–   )Úsetr   r(   ÚSQL_KEYWORDÚ	SQL_FIELDr„   ÚextendÚsequence_reset_by_name_sql)r-   ÚstyleÚtablesr’   r“   r–   rH   Ú	sequencess   `       r%   Ú	sql_flushzDatabaseOperations.sql_flushÜ   sÁ   ø€ Ù‘mô Ü×#Ñ#Ó#VÈvÔ#VÓVóˆFð  ö
ð ð	 ×!Ñ! (Õ+Ø×!Ñ! &Õ)Ø—‘ §¡°Ó 6Õ7ò	ð
ˆð 
ñ Ø7=Ö>¨e˜' 5Ò)Ð>ˆIÐ>Ø�J‰J�t×6Ñ6°u¸iÓHÔIØˆ
ùò
ùò ?s   ±AB7ÂB<c                 ó¼  — |sg S |j                  d«      ›d|j                  | j                  d«      «      ›d|j                  d«      ›d|j                  | j                  d«      «      ›d|j                  d«      ›d|j                  | j                  d«      «      ›d|j                  d	«      ›d
dj	                  |D �cg c]
  }d|d   z  ‘Œ c}«      ›d�gS c c}w )NÚUPDATEr˜   Úsqlite_sequenceÚSETÚseqz = 0 ÚWHERErƒ   ÚINz (rm   ú'%s'r–   z);)rœ   Ú	SQL_TABLEr„   r�   rp   )r-   r    r¢   Úsequence_infos       r%   rŸ   z-DatabaseOperations.sequence_reset_by_name_sqlñ   s½   € ÙØˆIð ×!Ñ! (Õ+Ø—‘ §¡Ð0AÓ BÕCØ×!Ñ! %Õ(Ø—‘ §¡°Ó 6Õ7Ø×!Ñ! 'Õ*Ø—‘ §¡°Ó 7Õ8Ø×!Ñ! $Õ'Ø—	‘	ØJSÖT¸�V˜m¨GÑ4Ó4ÒTõðð
ð 	
ùò Us   Â?C$c                 óè   — |€y t        j                  |«      rPt        j                  r5t        j                  || j
                  j                   «      }t        |«      S t        d«      ‚t        |«      S )NzNSQLite backend does not support timezone-aware datetimes when USE_TZ is False.)r   Úis_awarer   rY   Ú
make_naiver)   Ú
ValueErrorÚstr©r-   Úvalues     r%   Úadapt_datetimefield_valuez,DatabaseOperations.adapt_datetimefield_value  si   € Øˆ=Øô ×Ñ˜UÔ#Ü�ŠÜ ×+Ñ+¨E°4·?±?×3KÑ3KÓL�ô �5‹zÐô !ð'óð ô
 �5‹zÐr0   c                 ó^   — |€y t        j                  |«      rt        d«      ‚t        |«      S )Nz5SQLite backend does not support timezone-aware times.)r   r¯   r±   r²   r³   s     r%   Úadapt_timefield_valuez(DatabaseOperations.adapt_timefield_value  s0   € Øˆ=Øô ×Ñ˜UÔ#ÜÐTÓUÐUä�5‹zÐr0   c                 óø  •— t         ‰| �  |«      }|j                  j                  «       }|dk(  r|j	                  | j
                  «       |S |dk(  r|j	                  | j                  «       |S |dk(  r|j	                  | j                  «       |S |dk(  r"|j	                  | j                  |«      «       |S |dk(  r|j	                  | j                  «       |S |dk(  r|j	                  | j                  «       |S )Nr   r   r2   ÚDecimalFieldÚ	UUIDFieldÚBooleanField)ÚsuperÚget_db_convertersr8   Ú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½   z$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×=Ñ=Ô>ØÐr0   c                 óò   — |�tt        |t        j                  «      st        |«      }t        j                  r?t        j                  |«      s*t        j                  || j                  j
                  «      }|S r   )	r    Údatetimer   r   rY   r   r¯   Ú
make_awarer)   ©r-   r´   r=   r)   s       r%   rÀ   z.DatabaseOperations.convert_datetimefield_value/  sW   € ØÐÜ˜e¤X×%6Ñ%6Ô7Ü& uÓ-�Ü�Š¤x×'8Ñ'8¸Ô'?Ü ×+Ñ+¨E°4·?±?×3KÑ3KÓL�Øˆr0   c                 óT   — |�%t        |t        j                  «      st        |«      }|S r   )r    rÊ   Údater   rÌ   s       r%   rÁ   z*DatabaseOperations.convert_datefield_value7  ó%   € ØÐÜ˜e¤X§]¡]Ô3Ü" 5Ó)�Øˆr0   c                 óT   — |�%t        |t        j                  «      st        |«      }|S r   )r    rÊ   Útimer   rÌ   s       r%   rÂ   z*DatabaseOperations.convert_timefield_value=  rÏ   r0   c                 óö   ‡‡— t        j                  d¬«      j                  Št        |t        «      rAt        j
                  d«      j                  |j                  j                   «      Šˆˆfd„}|S ˆfd„}|S )Né   )Úprecr   c                 ód   •— | �- ‰| «      j                  ‰|j                  j                  ¬«      S y )N)Úcontext)Úquantizer8   rÖ   )r´   r=   r)   Úcreate_decimalÚquantize_values      €€r%   Ú	converterz@DatabaseOperations.get_decimalfield_converter.<locals>.converterL  s<   ø€ ØÐ$Ù)¨%Ó0×9Ñ9Ø&°
×0GÑ0G×0OÑ0Oð :ó ð ð %r0   c                 ó   •— | � ‰| «      S y r   rL   )r´   r=   r)   rØ   s      €r%   rÚ   z@DatabaseOperations.get_decimalfield_converter.<locals>.converterT  s   ø€ ØÐ$Ù)¨%Ó0Ð0ð %r0   )	ÚdecimalÚContextÚcreate_decimal_from_floatr    r   ÚDecimalÚscalebr8   Údecimal_places)r-   r=   rÚ   rØ   rÙ   s      @@r%   rÃ   z-DatabaseOperations.get_decimalfield_converterC  sh   ù€ ô !Ÿ™¨bÔ1×KÑKˆÜ�j¤#Ô&Ü$Ÿ_™_¨QÓ/×6Ñ6Ø×(Ñ(×7Ñ7Ð7óˆNõð Ðô	1ð Ðr0   c                 ó4   — |�t        j                  |«      }|S r   )ÚuuidÚUUIDrÌ   s       r%   rÄ   z*DatabaseOperations.convert_uuidfield_valueZ  s   € ØÐÜ—I‘I˜eÓ$ˆEØˆr0   c                 ó$   — |dv rt        |«      S |S )N)r   r   )ÚboolrÌ   s       r%   rÅ   z-DatabaseOperations.convert_booleanfield_value_  s   € Ø# v™oŒt�E‹{Ð8°5Ð8r0   c                 óˆ   •— |dk(  rddj                  |«      z  S |dk(  rddj                  |«      z  S t        ‰| �	  ||«      S )Nú^z	POWER(%s)ú,ú#z
BITXOR(%s))rp   r¼   Úcombine_expression)r-   Ú	connectorÚsub_expressionsrÈ   s      €r%   rë   z%DatabaseOperations.combine_expressionb  sO   ø€ ð ˜ÒØ §¡¨/Ó!:Ñ:Ð:Ø˜#ÒØ #§(¡(¨?Ó";Ñ;Ð;Ü‰wÑ)¨)°_ÓEÐEr0   c                 ó�   — |dvrt        d|z  «      ‚d|z  g|¢}t        |«      dkD  rt        d«      ‚ddj                  |«      z  S )N)ú+ú-Ú*ú/z$Invalid connector for timedelta: %s.r«   é   z)Too many params for timedelta operations.zdjango_format_dtdelta(%s)rm   )r   r,   r±   rp   )r-   rì   rí   Ú	fn_paramss       r%   Úcombine_duration_expressionz.DatabaseOperations.combine_duration_expressionk  sZ   € ØÐ0Ñ0ÜÐ FÈÑ RÓSÐSØ˜iÑ'Ð:¨/Ð:ˆ	Üˆy‹>˜AÒÜÐHÓIÐIØ*¨T¯Y©Y°yÓ-AÑAÐAr0   c                 ó   — |dv ryy)N)ÚPositiveBigIntegerFieldÚPositiveIntegerFieldÚPositiveSmallIntegerField)r   ì   ÿÿÿÿ )lûÿÿÿ         rú   rL   )r-   rÇ   s     r%   Úinteger_field_rangez&DatabaseOperations.integer_field_ranges  s   € ð ð 
ñ 
ð
 ,Ø:r0   c                 óZ   — |\  }}|\  }}g |¢|¢­}|dk(  rd|›d|›d�|fS d|›d|›d�|fS )Nr2   zdjango_time_diff(rm   rC   zdjango_timestamp_diff(rL   )	r-   rÇ   ÚlhsÚrhsÚlhs_sqlÚ
lhs_paramsÚrhs_sqlÚ
rhs_paramsrI   s	            r%   Úsubtract_temporalsz%DatabaseOperations.subtract_temporals~  sR   € Ø!Ñˆ�Ø!Ñˆ�Ø+�:Ð+ 
Ñ+ˆØ˜KÓ'Ú18º'ÐBÀFÐJÐJð (â29º7ÐCÀVÐKÐKr0   c                 óL   •— |t         j                  k(  ryt        ‰| �  |¬«      S )NzINSERT OR IGNORE INTO)Úon_conflict)r   ÚIGNOREr¼   Úinsert_statement)r-   r  rÈ   s     €r%   r  z#DatabaseOperations.insert_statement†  s'   ø€ Øœ*×+Ñ+Ò+Ø*Ü‰wÑ'°KÐ'Ó@Ð@r0   c                 óZ  •— |t         j                  k(  r�| j                  j                  j                  raddj                  t        | j                  |«      «      ›ddj                  t        | j                  |«      D �cg c]	  }|› d|› �‘Œ c}«      ›�S t        ‰| �%  ||||«      S c c}w )NzON CONFLICT(rm   z) DO UPDATE SET z = EXCLUDED.)
r   r¥   r)   r*   Ú%supports_update_conflicts_with_targetrp   Úmapr„   r¼   Úon_conflict_suffix_sql)r-   r"   r  Úupdate_fieldsÚunique_fieldsr$   rÈ   s         €r%   r  z)DatabaseOperations.on_conflict_suffix_sql‹  s¦   ø€ àœ:×,Ñ,Ò,Ø—‘×(Ñ(×NÓNð —	‘	œ#˜dŸo™o¨}Ó=Õ>Ø—	‘	ô &)¨¯©¸-Ó%Höà!ð !˜' ¨e¨WÒ5òôðð ô ‰wÑ-ØØØØó	
ð 	
ùòs   Á?B(c                 ó2   — t         j                  dk  rdgS g S )N)ró   é'   zGROUP BY TRUE)r   Úsqlite_version_inforj   s    r%   Úforce_group_byz!DatabaseOperations.force_group_by   s   € Ü$,×$@Ñ$@À7Ò$J�Ð ÐRÐPRÐRr0   c                 ó6   •— |dk  rd|z  S t         ‰| �  |«      S )Nr   z[#%s])r¼   Úformat_json_path_numeric_index)r-   ÚnumrÈ   s     €r%   r  z1DatabaseOperations.format_json_path_numeric_index£  s#   ø€ Ø # a¢ˆw˜‰}ÐX¬U©WÑ-SÐTWÓ-XÐXr0   r   )0Ú__name__Ú
__module__Ú__qualname__Ú"cast_char_field_without_max_lengthÚcast_data_typesÚexplain_prefixÚ	frozensetÚjsonfield_datatype_valuesr/   rA   rJ   rM   rT   rW   rQ   r^   ra   rc   re   rg   rk   ro   r~   r„   r‡   r�   r   r‘   r£   rŸ   rµ   r·   r½   rÀ   rÁ   rÂ   rÃ   rÄ   rÅ   rë   rõ   rû   r  r  r  r  r  Ú__classcell__)rÈ   s   @r%   r   r      s  ø„ Ø)/Ð&àØñ€Oð *€Nñ !*Ò*CÓ DÐòò(ò8Qòó
ó
òò

ò
ò
ò
òQòòò6ò$ò
ò:ð& ñ?ó ð?ð
 ;@Èuô ò*
ò&ò ôò"òòòò.ò
9ôFòBò	;òLõAô

ò*S÷Yð Yr0   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   r0   r%   ú<module>r*     sI   ðÛ Û Û Ý Ý å  Ý -ß >Ñ >Ý EÝ 1Ý ,Ý !ß IÑ IÝ 3å ôPYÐ/õ PYr0   