mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2025-05-31 14:58:25 -04:00
move to new vendoring fallback logic
This commit is contained in:
parent
eeb70c4018
commit
2c2d034d6d
14 changed files with 54 additions and 16 deletions
34
archivebox/vendor/__init__.py
vendored
34
archivebox/vendor/__init__.py
vendored
|
@ -0,0 +1,34 @@
|
|||
import sys
|
||||
import inspect
|
||||
import importlib
|
||||
from pathlib import Path
|
||||
|
||||
VENDOR_DIR = Path(__file__).parent
|
||||
|
||||
VENDORED_LIBS = {
|
||||
# sys.path dir: library name
|
||||
'python-atomicwrites': 'atomicwrites',
|
||||
'django-taggit': 'taggit',
|
||||
'pydantic-pkgr': 'pydantic_pkgr',
|
||||
'pocket': 'pocket',
|
||||
'base32-crockford': 'base32_crockford',
|
||||
}
|
||||
|
||||
def load_vendored_libs():
|
||||
for lib_subdir, lib_name in VENDORED_LIBS.items():
|
||||
lib_dir = VENDOR_DIR / lib_subdir
|
||||
assert lib_dir.is_dir(), 'Expected vendor libary {lib_name} could not be found in {lib_dir}'
|
||||
|
||||
try:
|
||||
lib = importlib.import_module(lib_name)
|
||||
# print(f"Successfully imported lib from environment {lib_name}: {inspect.getfile(lib)}")
|
||||
except ImportError:
|
||||
sys.path.append(str(lib_dir))
|
||||
try:
|
||||
lib = importlib.import_module(lib_name)
|
||||
# print(f"Successfully imported lib from vendored fallback {lib_name}: {inspect.getfile(lib)}")
|
||||
except ImportError as e:
|
||||
print(f"Failed to import lib from environment or vendored fallback {lib_name}: {e}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue