"""
Library - Платформенная библиотека компонентов
ИСПОЛЬЗОВАНИЕ:
from library import OzonClient, OneCClient # Короткие импорты
from library.connectors.api.ozon import OzonClient # Полные импорты
РЕЭКСПОРТЫ:
Автоматически генерируются из system/config/REGISTRY.yaml
"""
import sys
import os
from pathlib import Path
# ============================================================================
# PYTHONPATH SETUP
# ============================================================================
# Автоопределение workspace
_current_file = Path(__file__).resolve()
_workspace = _current_file.parent # library/ → workspace/
# Добавить workspace в sys.path если его там нет
if str(_workspace) not in sys.path:
sys.path.insert(0, str(_workspace))
# Также можно использовать переменную окружения
if 'WORKSPACE' in os.environ:
workspace_env = os.environ['WORKSPACE']
if workspace_env not in sys.path:
sys.path.insert(0, workspace_env)
# ============================================================================
# КОРОТКИЕ ИМПОРТЫ (из REGISTRY.yaml)
# ============================================================================
__all__ = []
# Загрузить реестр и создать реэкспорты
try:
from system.core.registry import load_registry
registry = load_registry()
library_config = registry.get('library', {})
# API Коннекторы
for name, info in library_config.get('connectors', {}).items():
try:
module_path = info['path']
class_name = info.get('main_class')
if class_name:
# Импортировать класс: from library.connectors.api.ozon import OzonClient
exec(f"from {module_path} import {class_name}")
__all__.append(class_name)
except ImportError:
pass
# Внутренние утилиты
for name, info in library_config.get('internal', {}).items():
try:
module_path = info['path']
class_name = info.get('main_class')
if class_name:
exec(f"from {module_path} import {class_name}")
__all__.append(class_name)
except ImportError:
pass
except ImportError:
# Если registry недоступен — fallback на ручные импорты
try:
from library.connectors.api.ozon import OzonClient
__all__.append('OzonClient')
except ImportError:
pass
try:
from library.connectors.api.onec import OneCClient
__all__.append('OneCClient')
except ImportError:
pass
# Версия библиотеки
__version__ = '1.0.0'