o
    [h                     @   sX   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	 d	eZdS )
    N)transaction)BaseDatabaseFeatures)OperationalError)cached_property   )Databasec                       s  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ejdk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dddd	Z#d
hZ$dZ%dZ&dZ'dZ(e)dd Z*e) fddZ+e)dd Z,e-e./dZ0e-e./dZ1e)dd Z2e-e./dZ3  Z4S )DatabaseFeatures)      FTi  r	   )r	   #      Znocasebinary)cicsZnon_defaultZvirtualz9expressions.tests.FTimeDeltaTests.test_mixed_comparisons1z"INSERT INTO {} ("null") VALUES (1)c                 C   sn   dhh dh ddhd}| j  r|ddhdhd	 n
|d
hdhd tjdk r5|ddhi |S )NzZmodel_fields.test_decimalfield.DecimalFieldTests.test_fetch_from_db_without_float_rounding>   z<schema.tests.SchemaTests.test_unique_no_unnecessary_fk_dropsz4schema.tests.SchemaTests.test_unique_and_reverse_m2mzKschema.tests.SchemaTests.test_rename_column_renames_deferred_sql_referenceszHschema.tests.SchemaTests.test_alter_field_default_doesnt_perform_queries>   zLdb_functions.math.test_round.RoundTests.test_decimal_with_negative_precisionzIdb_functions.math.test_round.RoundTests.test_null_with_negative_precisionzLdb_functions.math.test_round.RoundTests.test_integer_with_negative_precisionzJdb_functions.math.test_round.RoundTests.test_float_with_negative_precisionz>backends.base.test_base.ExecuteWrapperTests.test_wrapper_debug)z6SQLite stores values rounded to 15 significant digits.z5SQLite naively remakes the table on field alteration.z6SQLite doesn't support negative precision for ROUND().z/The actual query cannot be determined on SQLitezJservers.test_liveserverthread.LiveServerThreadTest.test_closes_connectionszGservers.tests.LiveServerTestCloseConnectionTest.test_closes_connectionszbtest_utils.tests.AssertNumQueriesUponConnectionTests.test_ignores_connection_configuration_queries)zOthe sqlite backend's close() method is a no-op when using an in-memory databasezIFor SQLite in-memory tests, closing the connection destroys the database.zMservers.tests.LiveServerInMemoryDatabaseLockTest.test_in_memory_database_lockz`backends.sqlite.test_creation.TestDbSignatureTests.test_get_test_db_clone_settings_not_supported)zOOnly connections to in-memory SQLite databases are passed to the server thread.zMmultiprocessing's start method is checked only for in-memory SQLite databases)r	   /   zESQLite does not parse escaped double quotes in the JSON path notationzQmodel_fields.test_jsonfield.TestQuerying.test_lookups_special_chars_double_quotes)
connectionZis_in_memory_dbupdater   sqlite_version_info)selfskips r   /home/ubuntu/experiments/live_experiments/Pythonexperiments/Otree/venv/lib/python3.10/site-packages/django/db/backends/sqlite3/features.pydjango_test_skips;   s>   

	z"DatabaseFeatures.django_test_skipsc                    s   i t  jdddddS )NZ	AutoFieldZBigIntegerFieldZ	CharField)ZBigAutoFieldZDurationFieldZGenericIPAddressFieldZSmallAutoField)superintrospected_field_typesr   	__class__r   r   r      s   z)DatabaseFeatures.introspected_field_typesc              	   C   s   | j  8}zt| j j |d W d    n1 sw   Y  W n ty4   Y W d    dS w W d    dS 1 s@w   Y  dS )NzSELECT JSON('{"a": "b"}')FT)r   cursorr   Zatomicaliasexecuter   )r   r   r   r   r   supports_json_field   s   
z$DatabaseFeatures.supports_json_fieldr!   c                 C   s
   t jdkS )N)r	   r   )r   r   r   r   r   r   can_return_columns_from_insert   s   
z/DatabaseFeatures.can_return_columns_from_insertr"   )5__name__
__module____qualname__Zminimum_database_versionZ#test_db_allows_multiple_connectionsZsupports_unspecified_pkZsupports_timezonesZmax_query_paramsZsupports_transactionsZatomic_transactionsZcan_rollback_ddlZcan_create_inline_fkZrequires_literal_defaultsZcan_clone_databasesZsupports_temporal_subtractionZignores_table_name_caseZsupports_cast_with_precisionZtime_cast_precisionZcan_release_savepointsZhas_case_insensitive_liker   r   Zcan_alter_table_drop_columnZ supports_parentheses_in_compoundZcan_defer_constraint_checksZsupports_over_clauseZ#supports_frame_range_fixed_distanceZsupports_frame_exclusionZ supports_aggregate_filter_clauseZorder_by_nulls_firstZsupports_json_field_containsZsupports_update_conflictsZ%supports_update_conflicts_with_targetZ!supports_stored_generated_columnsZ"supports_virtual_generated_columnsZtest_collationsZdjango_test_expected_failuresZinsert_test_table_with_defaultsZ"supports_default_keyword_in_insertZsupports_unlimited_charfieldZsupports_tuple_lookupsr   r   r   r!   propertyoperator
attrgetterZcan_introspect_json_fieldZhas_json_object_functionr"   Z can_return_rows_from_bulk_insert__classcell__r   r   r   r   r      sn    
	
H	
	
r   )r'   Z	django.dbr   Z django.db.backends.base.featuresr   Zdjango.db.utilsr   Zdjango.utils.functionalr   baser   r   r   r   r   r   <module>   s    