# -*- coding: utf-8 -*-
from ._gae import gae

DRIVERS = {}

if gae is not None:
    DRIVERS['google'] = gae
    psycopg2_adapt = None
    cx_Oracle = None
    pyodbc = None
    couchdb = None
    is_jdbc = False

try:
    from pysqlite2 import dbapi2 as sqlite2
    DRIVERS['sqlite2'] = sqlite2
except ImportError:
    pass

try:
    from sqlite3 import dbapi2 as sqlite3
    DRIVERS['sqlite3'] = sqlite3
except ImportError:
    pass

try:
    import pymysql
    DRIVERS['pymysql'] = pymysql
except ImportError:
    pass

try:
    import MySQLdb
    DRIVERS['MySQLdb'] = MySQLdb
except ImportError:
    pass

try:
    import mysql.connector as mysqlconnector
    DRIVERS["mysqlconnector"] = mysqlconnector
except ImportError:
    pass

try:
    import psycopg2
    from psycopg2.extensions import adapt as psycopg2_adapt
    DRIVERS['psycopg2'] = psycopg2
except ImportError:
    psycopg2_adapt = None
    
try:
    import pg8000
    DRIVERS['pg8000'] = pg8000
except ImportError:
    pass

try:
    import cx_Oracle
    DRIVERS['cx_Oracle'] = cx_Oracle
except ImportError:
    cx_Oracle = None
    
try:
    import pyodbc
    DRIVERS['pyodbc'] = pyodbc
    #DRIVERS.append('DB2(pyodbc)')
    #DRIVERS.append('Teradata(pyodbc)')
    #DRIVERS.append('Ingres(pyodbc)')
except ImportError:
    try:
        import pypyodbc as pyodbc
        DRIVERS['pyodbc'] = pyodbc
    except ImportError:
        pyodbc = None
    
try:
    import ibm_db_dbi
    DRIVERS['ibm_db_dbi'] = ibm_db_dbi
except ImportError:
    pass
try:
    import Sybase
    DRIVERS['Sybase'] = Sybase
except ImportError:
    pass

try:
    import kinterbasdb
    DRIVERS['kinterbasdb'] = kinterbasdb
    #DRIVERS.append('Firebird(kinterbasdb)')
except ImportError:
    pass

try:
    import fdb
    DRIVERS['fdb'] = fdb
except ImportError:
    pass

try:
    import firebirdsql
    DRIVERS['firebirdsql'] = firebirdsql
except ImportError:
    pass

try:
    import informixdb
    #LOGGER.warning('Informix support is experimental')
    DRIVERS['informixdb'] = informixdb
except ImportError:
    pass

try:
    import sapdb
    DRIVERS['sapdb'] = sapdb
    #LOGGER.warning('SAPDB support is experimental')
except ImportError:
    pass

try:
    import cubriddb
    DRIVERS['cubriddb'] = cubriddb
    #LOGGER.warning('Cubrid support is experimental')
except ImportError:
    pass

try:
    from com.ziclix.python.sql import zxJDBC
    import java.sql
    # Try sqlite jdbc driver from http://www.zentus.com/sqlitejdbc/
    from org.sqlite import JDBC  # required by java.sql; ensure we have it
    zxJDBC_sqlite = java.sql.DriverManager
    DRIVERS['zxJDBC'] = zxJDBC
    #DRIVERS.append('SQLite(zxJDBC)')
    #LOGGER.warning('zxJDBC support is experimental')
    is_jdbc = True
except ImportError:
    is_jdbc = False

try:
    import couchdb
    DRIVERS['couchdb'] = couchdb
except ImportError:
    couchdb = None

try:
    import pymongo
    DRIVERS['pymongo'] = pymongo
except:
    pass

try:
    import imaplib
    DRIVERS['imaplib'] = imaplib
except:
    pass


# for backward compatibility?
def get_driver(name):
    return DRIVERS.get(name)
