mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2026-04-05 23:37:58 +10:00
rename vendor dir to pkgs
This commit is contained in:
39
archivebox/pkgs/__init__.py
Normal file
39
archivebox/pkgs/__init__.py
Normal file
@@ -0,0 +1,39 @@
|
||||
import sys
|
||||
import importlib
|
||||
from pathlib import Path
|
||||
|
||||
PKGS_DIR = Path(__file__).parent
|
||||
|
||||
VENDORED_PKGS = [
|
||||
'abx',
|
||||
# 'pydantic-pkgr',
|
||||
]
|
||||
|
||||
# scan ./pkgs and add all dirs present to list of available VENDORED_PKGS
|
||||
for subdir in reversed(sorted(PKGS_DIR.iterdir())):
|
||||
if subdir.is_dir() and subdir.name not in VENDORED_PKGS and not subdir.name.startswith('_'):
|
||||
VENDORED_PKGS.append(subdir.name)
|
||||
|
||||
|
||||
def load_vendored_pkgs():
|
||||
"""Add archivebox/vendor to sys.path and import all vendored libraries present within"""
|
||||
if str(PKGS_DIR) not in sys.path:
|
||||
sys.path.append(str(PKGS_DIR))
|
||||
|
||||
for pkg_name in VENDORED_PKGS:
|
||||
pkg_dir = PKGS_DIR / pkg_name
|
||||
assert pkg_dir.is_dir(), f'Required vendored pkg {pkg_name} could not be found in {pkg_dir}'
|
||||
|
||||
try:
|
||||
lib = importlib.import_module(pkg_name)
|
||||
# print(f"Successfully imported lib from environment {pkg_name}")
|
||||
except ImportError:
|
||||
sys.path.append(str(pkg_dir))
|
||||
try:
|
||||
lib = importlib.import_module(pkg_name)
|
||||
# print(f"Successfully imported lib from vendored fallback {pkg_name}: {inspect.getfile(lib)}")
|
||||
except ImportError as e:
|
||||
print(f"Failed to import lib from environment or vendored fallback {pkg_name}: {e}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user