Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
__init__.py63 linesDownload Raw Back to dialects
1# dialects/__init__.py
2# Copyright (C) 2005-2026 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
7
8from __future__ import annotations
9
10from typing import Any
11from typing import Callable
12from typing import Optional
13from typing import Type
14from typing import TYPE_CHECKING
15
16from .. import util
17
18if TYPE_CHECKING:
19    from ..engine.interfaces import Dialect
20
21__all__ = ("mssql", "mysql", "oracle", "postgresql", "sqlite")
22
23
24def _auto_fn(name: str) -> Optional[Callable[[], Type[Dialect]]]:
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    try:
38        if dialect == "mariadb":
39            # it's "OK" for us to hardcode here since _auto_fn is already
40            # hardcoded.   if mysql / mariadb etc were third party dialects
41            # they would just publish all the entrypoints, which would actually
42            # look much nicer.
43            module: Any = __import__(
44                "sqlalchemy.dialects.mysql.mariadb"
45            ).dialects.mysql.mariadb
46            return module.loader(driver)  # type: ignore
47        else:
48            module = __import__("sqlalchemy.dialects.%s" % (dialect,)).dialects
49            module = getattr(module, dialect)
50    except ImportError:
51        return None
52
53    if hasattr(module, driver):
54        module = getattr(module, driver)
55        return lambda: module.dialect
56    else:
57        return None
58
59
60registry = util.PluginLoader("sqlalchemy.dialects", auto_fn=_auto_fn)
61
62plugins = util.PluginLoader("sqlalchemy.plugins")
63 
codekingpro/portable-devtools · Team Ai