3
(h
                 @   s   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	 ddl
mZ yd dlZW n ek
rl   dZY nX G d	d
 d
eZdS )    )unicode_literals)utils)BaseDatabaseFeatures)six)cached_property   )DatabaseNc               @   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dZdZdZdZdZedd Zedd Zedd Zed	d
 Zedd ZdS )DatabaseFeaturesFTc             C   s
   t jdkS )N         )r
   r   r   )r   sqlite_version_info)self r   G/tmp/pip-install-q3hcpn_q/Django/django/db/backends/sqlite3/features.pyuses_savepoints,   s    z DatabaseFeatures.uses_savepointsc             C   s   | j S )N)r   )r   r   r   r   can_release_savepoints0   s    z'DatabaseFeatures.can_release_savepointsc             C   s   t jotjdkotjdkS )Nzsqlite3.dbapi2r
         )r
   r   r   )r   PY3r   __name__r   )r   r   r   r   can_share_in_memory_db4   s    
z'DatabaseFeatures.can_share_in_memory_dbc             C   s\   | j j H}|jd y|jd d}W n tjk
rB   d}Y nX |jd W dQ R X |S )a  Confirm support for STDDEV and related stats functions

        SQLite supports STDDEV as an extension package; so
        connection.ops.check_expression_support() can't unilaterally
        rule out support for STDDEV. We need to manually check
        whether the call works.
        z CREATE TABLE STDDEV_TEST (X INT)z!SELECT STDDEV(*) FROM STDDEV_TESTTFzDROP TABLE STDDEV_TESTN)
connectioncursorexecuter   ZDatabaseError)r   r   Zhas_supportr   r   r   supports_stddev<   s    	


z DatabaseFeatures.supports_stddevc             C   s   t d k	S )N)pytz)r   r   r   r   has_zoneinfo_databaseO   s    z&DatabaseFeatures.has_zoneinfo_databaseN)r   
__module____qualname__Zcan_use_chunked_readsZ#test_db_allows_multiple_connectionsZsupports_unspecified_pkZsupports_timezonesZsupports_1000_query_parametersZ(supports_mixed_date_datetime_comparisonsZhas_bulk_insertZ6can_combine_inserts_with_and_without_auto_increment_pkZsupports_foreign_keysZ!supports_column_check_constraintsZ"autocommits_when_autocommit_is_offZcan_introspect_decimal_fieldZ%can_introspect_positive_integer_fieldZ"can_introspect_small_integer_fieldZsupports_transactionsZatomic_transactionsZcan_rollback_ddlZsupports_paramstyle_pyformatZsupports_sequence_resetZcan_clone_databasesZsupports_temporal_subtractionZignores_quoted_identifier_caser   r   r   r   r   r   r   r   r   r   r	      s6   r	   )
__future__r   Z	django.dbr   Z django.db.backends.base.featuresr   Zdjango.utilsr   Zdjango.utils.functionalr   baser   r   ImportErrorr	   r   r   r   r   <module>   s   
