
     h                     f    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
  G d d	e          ZdS )
    N)transaction)BaseDatabaseFeatures)OperationalError)cached_property   )Databasec                   P    e 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dZdZdZdZdZdZdZej        dk    Zej        dk    ZdZej        dk    ZeZej        d	k    Zej        dk    Zej        d
k    Zej        dk    Zej        dk    Z dZ!dZ"ej        dk    Z#e#Z$ddddZ%dhZ&e'd             Z(e'd             Z)e' fd            Z*e'd             Z+ e, e-j.        d                    Z/ e, e-j.        d                    Z0e'd             Z1 e, e-j.        d                    Z2 xZ3S )DatabaseFeatures)   	   FTi  r   )r      r   )r   #      )r      r   )r      r   )r      r   )r      r   )r   r   r   )r      r   nocasebinary)cicsnon_defaultz9expressions.tests.FTimeDeltaTests.test_mixed_comparisons1c                     dhh dh dd}t           j        dk     r|                    ddhi           | j                                        r|                    dd	d
hi           |S )NzZmodel_fields.test_decimalfield.DecimalFieldTests.test_fetch_from_db_without_float_rounding>   4schema.tests.SchemaTests.test_unique_and_reverse_m2m<schema.tests.SchemaTests.test_unique_no_unnecessary_fk_dropsHschema.tests.SchemaTests.test_alter_field_default_doesnt_perform_queriesKschema.tests.SchemaTests.test_rename_column_renames_deferred_sql_references>   Idb_functions.math.test_round.RoundTests.test_null_with_negative_precisionJdb_functions.math.test_round.RoundTests.test_float_with_negative_precisionLdb_functions.math.test_round.RoundTests.test_decimal_with_negative_precisionLdb_functions.math.test_round.RoundTests.test_integer_with_negative_precision)z6SQLite stores values rounded to 15 significant digits.z5SQLite naively remakes the table on field alteration.z6SQLite doesn't support negative precision for ROUND().)r      z*Nondeterministic failure on SQLite < 3.27.zIexpressions_window.tests.WindowFunctionTests.test_subquery_row_range_rankzOthe sqlite backend's close() method is a no-op when using an in-memory databasezJservers.test_liveserverthread.LiveServerThreadTest.test_closes_connectionszGservers.tests.LiveServerTestCloseConnectionTest.test_closes_connections)r   sqlite_version_infoupdate
connectionis_in_memory_db)selfskipss     _/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/django/db/backends/sqlite3/features.pydjango_test_skipsz"DatabaseFeatures.django_test_skips;   s    <GF F F	G 	G 	G
 
0 ''11LL@7C   ?**,, 	LL)22+
 
 
     c                 "    t           j        dk    S )N)r      r   r   r$   r(   s    r*   !supports_atomic_references_renamez2DatabaseFeatures.supports_atomic_references_renamel   s    +z99r,   c                 <    i t                      j        dddddS )N	AutoFieldBigIntegerField	CharField)BigAutoFieldDurationFieldGenericIPAddressFieldSmallAutoField)superintrospected_field_types)r(   	__class__s    r*   r;   z)DatabaseFeatures.introspected_field_typesp   s7    
gg.
'.%0)
 
 
 	
r,   c                 :   | j                                         5 }	 t          j        | j         j                  5  |                    d           d d d            n# 1 swxY w Y   n# t          $ r Y d d d            dS w xY wd d d            n# 1 swxY w Y   dS )NzSELECT JSON('{"a": "b"}')FT)r&   cursorr   atomicaliasexecuter   )r(   r>   s     r*   supports_json_fieldz$DatabaseFeatures.supports_json_fieldz   sJ   _##%% 	 '(=>> B BNN#@AAAB B B B B B B B B B B B B B B#   	 	 	 	 	 	 	 			 	 	 	 	 	 	 	 	 	 	 	 	 	 	 tsW   BA(AA(A 	 A(#A 	$A('B(
B2B BBBBrB   c                 "    t           j        dk    S )N)r   r   r/   r0   s    r*   can_return_columns_from_insertz/DatabaseFeatures.can_return_columns_from_insert   s    +w66r,   rD   )4__name__
__module____qualname__minimum_database_version#test_db_allows_multiple_connectionssupports_unspecified_pksupports_timezonesmax_query_paramssupports_transactionsatomic_transactionscan_rollback_ddlcan_create_inline_fksupports_paramstyle_pyformatrequires_literal_defaultscan_clone_databasessupports_temporal_subtractionignores_table_name_casesupports_cast_with_precisiontime_cast_precisioncan_release_savepointshas_case_insensitive_liker   r$   can_alter_table_rename_columncan_alter_table_drop_column supports_parentheses_in_compound!supports_pragma_foreign_key_checkcan_defer_constraint_checks%supports_functions_in_partial_indexessupports_over_clause#supports_frame_range_fixed_distance supports_aggregate_filter_clause supports_order_by_nulls_modifierorder_by_nulls_firstsupports_json_field_containssupports_update_conflicts%supports_update_conflicts_with_targettest_collationsdjango_test_expected_failuresr   r+   r1   r;   rB   propertyoperator
attrgettercan_introspect_json_fieldhas_json_object_functionrD    can_return_rows_from_bulk_insert__classcell__)r<   s   @r*   r
   r
      s9       %*/'"  #(  $$(!"#( ! $$,$@J$N!"*">*"L',$ )1(D
(R%"C,4,HJ,V)#7:E*2*F**T''/'Cz'Q$'/'Cz'Q$#(  ( <
 J,E) O 	D%! . . _.` : : _: 
 
 
 
 _
   _ !))<)<=R)S)S T T'x(;(;<Q(R(RSS7 7 _7 (0x<==( ($$$$$r,   r
   )rk   	django.dbr    django.db.backends.base.featuresr   django.db.utilsr   django.utils.functionalr   baser   r
    r,   r*   <module>rw      s     ! ! ! ! ! ! A A A A A A , , , , , , 3 3 3 3 3 3      B B B B B+ B B B B Br,   