Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/sqlalchemy/dialects/__init__.py: 52%
33 statements
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-07 06:35 +0000
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-07 06:35 +0000
1# dialects/__init__.py
2# Copyright (C) 2005-2023 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: https://www.opensource.org/licenses/mit-license.php
8__all__ = (
9 "firebird",
10 "mssql",
11 "mysql",
12 "oracle",
13 "postgresql",
14 "sqlite",
15 "sybase",
16)
19from .. import util
22def _auto_fn(name):
23 """default dialect importer.
25 plugs into the :class:`.PluginLoader`
26 as a first-hit system.
28 """
29 if "." in name:
30 dialect, driver = name.split(".")
31 else:
32 dialect = name
33 driver = "base"
35 try:
36 if dialect == "firebird":
37 try:
38 module = __import__("sqlalchemy_firebird")
39 except ImportError:
40 module = __import__("sqlalchemy.dialects.firebird").dialects
41 module = getattr(module, dialect)
42 elif dialect == "sybase":
43 try:
44 module = __import__("sqlalchemy_sybase")
45 except ImportError:
46 module = __import__("sqlalchemy.dialects.sybase").dialects
47 module = getattr(module, dialect)
48 elif dialect == "mariadb":
49 # it's "OK" for us to hardcode here since _auto_fn is already
50 # hardcoded. if mysql / mariadb etc were third party dialects
51 # they would just publish all the entrypoints, which would actually
52 # look much nicer.
53 module = __import__(
54 "sqlalchemy.dialects.mysql.mariadb"
55 ).dialects.mysql.mariadb
56 return module.loader(driver)
57 else:
58 module = __import__("sqlalchemy.dialects.%s" % (dialect,)).dialects
59 module = getattr(module, dialect)
60 except ImportError:
61 return None
63 if hasattr(module, driver):
64 module = getattr(module, driver)
65 return lambda: module.dialect
66 else:
67 return None
70registry = util.PluginLoader("sqlalchemy.dialects", auto_fn=_auto_fn)
72plugins = util.PluginLoader("sqlalchemy.plugins")