1# dialects/__init__.py 
    2# Copyright (C) 2005-2021 the SQLAlchemy authors and contributors 
    3# <see AUTHORS file> 
    4# 
    5# This module is part of SQLAlchemy and is released under 
    6# the MIT License: http://www.opensource.org/licenses/mit-license.php 
    7 
    8__all__ = ( 
    9    "firebird", 
    10    "mssql", 
    11    "mysql", 
    12    "oracle", 
    13    "postgresql", 
    14    "sqlite", 
    15    "sybase", 
    16) 
    17 
    18from .. import util 
    19 
    20 
    21_translates = {"postgres": "postgresql"} 
    22 
    23 
    24def _auto_fn(name): 
    25    """default dialect importer. 
    26 
    27    plugs into the :class:`.PluginLoader` 
    28    as a first-hit system. 
    29 
    30    """ 
    31    if "." in name: 
    32        dialect, driver = name.split(".") 
    33    else: 
    34        dialect = name 
    35        driver = "base" 
    36 
    37    if dialect in _translates: 
    38        translated = _translates[dialect] 
    39        util.warn_deprecated( 
    40            "The '%s' dialect name has been " 
    41            "renamed to '%s'" % (dialect, translated) 
    42        ) 
    43        dialect = translated 
    44    try: 
    45        if dialect == "firebird": 
    46            try: 
    47                module = __import__("sqlalchemy_firebird") 
    48            except ImportError: 
    49                module = __import__("sqlalchemy.dialects.firebird").dialects 
    50                module = getattr(module, dialect) 
    51        elif dialect == "sybase": 
    52            try: 
    53                module = __import__("sqlalchemy_sybase") 
    54            except ImportError: 
    55                module = __import__("sqlalchemy.dialects.sybase").dialects 
    56                module = getattr(module, dialect) 
    57        else: 
    58            module = __import__("sqlalchemy.dialects.%s" % (dialect,)).dialects 
    59            module = getattr(module, dialect) 
    60    except ImportError: 
    61        return None 
    62 
    63    if hasattr(module, driver): 
    64        module = getattr(module, driver) 
    65        return lambda: module.dialect 
    66    else: 
    67        return None 
    68 
    69 
    70registry = util.PluginLoader("sqlalchemy.dialects", auto_fn=_auto_fn) 
    71 
    72plugins = util.PluginLoader("sqlalchemy.plugins")