core: move split compat/legacy modules into hpi_compat and compat
This commit is contained in:
parent
70bf51a125
commit
4f7c9b4a71
9 changed files with 72 additions and 62 deletions
|
@ -1,56 +1,12 @@
|
|||
'''
|
||||
Some backwards compatibility stuff/deprecation helpers
|
||||
Contains backwards compatibility helpers for different python versions.
|
||||
If something is relevant to HPI itself, please put it in .hpi_compat instead
|
||||
'''
|
||||
import os
|
||||
import sys
|
||||
from types import ModuleType
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from . import warnings
|
||||
from .common import LazyLogger
|
||||
|
||||
|
||||
logger = LazyLogger('my.core.compat')
|
||||
|
||||
|
||||
def pre_pip_dal_handler(
|
||||
name: str,
|
||||
e: ModuleNotFoundError,
|
||||
cfg,
|
||||
requires=[],
|
||||
) -> ModuleType:
|
||||
'''
|
||||
https://github.com/karlicoss/HPI/issues/79
|
||||
'''
|
||||
if e.name != name:
|
||||
# the module itself was imported, so the problem is with some dependencies
|
||||
raise e
|
||||
try:
|
||||
dal = _get_dal(cfg, name)
|
||||
warnings.high(f'''
|
||||
Specifying modules' dependencies in the config or in my/config/repos is deprecated!
|
||||
Please install {' '.join(requires)} as PIP packages (see the corresponding README instructions).
|
||||
'''.strip(), stacklevel=2)
|
||||
except ModuleNotFoundError:
|
||||
dal = None
|
||||
|
||||
if dal is None:
|
||||
# probably means there was nothing in the old config in the first place
|
||||
# so we should raise the original exception
|
||||
raise e
|
||||
return dal
|
||||
|
||||
|
||||
def _get_dal(cfg, module_name: str):
|
||||
mpath = getattr(cfg, module_name, None)
|
||||
if mpath is not None:
|
||||
from .common import import_dir
|
||||
return import_dir(mpath, '.dal')
|
||||
else:
|
||||
from importlib import import_module
|
||||
return import_module(f'my.config.repos.{module_name}.dal')
|
||||
|
||||
|
||||
import os
|
||||
windows = os.name == 'nt'
|
||||
|
||||
|
||||
|
@ -60,7 +16,7 @@ def sqlite_backup(*, source: sqlite3.Connection, dest: sqlite3.Connection, **kwa
|
|||
source.backup(dest, **kwargs)
|
||||
|
||||
|
||||
# can remove after python3.9
|
||||
# can remove after python3.9 (although need to keep the method itself for bwd compat)
|
||||
def removeprefix(text: str, prefix: str) -> str:
|
||||
if text.startswith(prefix):
|
||||
return text[len(prefix):]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue