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

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 

7 

8__all__ = ( 

9 "firebird", 

10 "mssql", 

11 "mysql", 

12 "oracle", 

13 "postgresql", 

14 "sqlite", 

15 "sybase", 

16) 

17 

18 

19from .. import util 

20 

21 

22def _auto_fn(name): 

23 """default dialect importer. 

24 

25 plugs into the :class:`.PluginLoader` 

26 as a first-hit system. 

27 

28 """ 

29 if "." in name: 

30 dialect, driver = name.split(".") 

31 else: 

32 dialect = name 

33 driver = "base" 

34 

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 

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