# -*- coding: utf-8 -*-

DRIVERS = {}

from ._gae import gae

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 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

try:
    import pytds

    DRIVERS["pytds"] = pytds
except:
    pass
