o
    ^"<f                     @   s`   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 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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 ddddZ!e"dd Z#e"dd Z$e" fddZ%e"dd Z&e'e()dZ*e'e()dZ+  Z,S )DatabaseFeaturesTFi     )r	      r   )r	      r   )r	      r   r	      r   )r	      r   )r	   r   r   nocasebinary)cicsnon_defaultc                 C   sL   dhh ddhd}t jdk r|ddhi | j r$|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_referenceszMmodel_fields.test_integerfield.PositiveIntegerFieldTests.test_negative_values)z6SQLite stores values rounded to 15 significant digits.z5SQLite naively remakes the table on field alteration.z!SQLite doesn't have a constraint.)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_connections)r   sqlite_version_infoupdate
connectionis_in_memory_db)selfskips r    Z/var/www/html/kck/venv/lib/python3.10/site-packages/django/db/backends/sqlite3/features.pydjango_test_skips5   s&   

z"DatabaseFeatures.django_test_skipsc                 C   s*   t  d drtjdkrdS tjdkS )Nr   z10.15.r   F)r	      r   )platformmac_ver
startswithr   r   r   r    r    r!   !supports_atomic_references_renameT   s   
z2DatabaseFeatures.supports_atomic_references_renamec                    s   i t  jdddddS )N	AutoFieldBigIntegerField	CharField)BigAutoFieldDurationFieldGenericIPAddressFieldSmallAutoField)superintrospected_field_typesr'   	__class__r    r!   r1   \   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   atomicaliasexecuter   )r   r4   r    r    r!   supports_json_fieldf   s   
z$DatabaseFeatures.supports_json_fieldr8   )-__name__
__module____qualname__can_use_chunked_reads#test_db_allows_multiple_connectionssupports_unspecified_pksupports_timezonesmax_query_params(supports_mixed_date_datetime_comparisonssupports_transactionsatomic_transactionscan_rollback_ddlcan_create_inline_fksupports_paramstyle_pyformatcan_clone_databasessupports_temporal_subtractionignores_table_name_casesupports_cast_with_precisiontime_cast_precisioncan_release_savepointsr   r   can_alter_table_rename_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test_collationsr   r"   r(   r1   r8   propertyoperator
attrgettercan_introspect_json_fieldhas_json_object_function__classcell__r    r    r2   r!   r      sV    








	
	r   )rZ   r$   	django.dbr    django.db.backends.base.featuresr   django.db.utilsr   django.utils.functionalr   baser   r   r    r    r    r!   <module>   s    