Core
Package Maximizer - Ядро системы максимизации непротиворечивого множества пакетов.
- class package_maximizer.core.maximizer.PackageMaximizer(manager=PackageManagerType.APT, solver=SolverType.GREEDY, parser=None, analyzer=None, use_cache=True, cache_ttl=3600)[source]
Bases:
objectОсновной класс для решения задачи максимизации непротиворечивого множества пакетов.
Использует различные солверы (SAT, ILP, SMT, CP-SAT) для нахождения оптимального решения.
- Пример использования:
maximizer = PackageMaximizer(manager=’apt’, solver=’z3’) packages = [Package(name=’pkg1’), Package(name=’pkg2’)] result = maximizer.maximize(packages)
- Parameters:
manager (PackageManagerType | str)
solver (SolverType | str | ConstraintSolver)
parser (PackageParser | str | None)
analyzer (ResultAnalyzer | str | None)
use_cache (bool)
cache_ttl (int)
- __init__(manager=PackageManagerType.APT, solver=SolverType.GREEDY, parser=None, analyzer=None, use_cache=True, cache_ttl=3600)[source]
Инициализация PackageMaximizer.
- Parameters:
manager (PackageManagerType | str) – Тип пакетного менеджера (APT, PACMAN, DNF и др.)
solver (SolverType | str | ConstraintSolver) – Тип солвера (GREEDY, Z3, PULP, ORTOOLS и др.) или экземпляр
parser (PackageParser | str | None) – Парсер для пакетного менеджера (опционально)
analyzer (ResultAnalyzer | str | None) – Анализатор результатов (опционально)
use_cache (bool) – Использовать кэширование
cache_ttl (int) – Время жизни кэша в секундах
- Return type:
None
- maximize(packages)[source]
Максимизировать множество пакетов с использованием настроенного солвера.
- Parameters:
packages (Sequence[Package]) – Последовательность объектов Package
- Returns:
Список выбранных объектов Package
- Return type:
list[Package]
- solve(packages)[source]
Решить задачу и вернуть только имена пакетов.
- Parameters:
packages (Sequence[Package]) – Последовательность объектов Package
- Returns:
Список имен выбранных пакетов
- Return type:
list[str]
- solve_with_weights(packages, weights=None)[source]
Решить задачу с учетом весов пакетов.
- Parameters:
packages (Sequence[Package]) – Последовательность объектов Package
weights (dict[str, float] | None) – Словарь весов для пакетов
- Returns:
Список имен выбранных пакетов
- Return type:
list[str]
- check_constraints(packages, constraints)[source]
Проверить выполнение ограничений для данных пакетов.
- Parameters:
packages (Iterable[Package]) – Итерируемый объект Package
constraints (Iterable[PackageConstraint]) – Итерируемый объект PackageConstraint
- Returns:
Словарь с соответствием имени пакета статусу выполнения ограничения
- Return type:
dict[str, bool]
- analyze(installed=None, proposed=None)[source]
Проанализировать результаты максимизации.
- Parameters:
installed (list[str] | None) – Список установленных пакетов
proposed (list[str] | None) – Список предложенных пакетов
- Returns:
Результаты анализа
- Return type:
dict[str, Any]
- parse_packages(raw)[source]
Разобрать сырые данные в пакеты с использованием текущего парсера.
- Parameters:
raw (str) – Сырые текстовые данные
- Returns:
Список объектов Package
- Return type:
list[Package]
- parse_from_system(package_names=None)[source]
Разобрать пакеты напрямую из системы.
- Parameters:
package_names (list[str] | None) – Список имен пакетов для запроса
- Returns:
Список объектов Package
- Return type:
list[Package]
- static from_names(names)[source]
Создать объекты Package из имен.
- Parameters:
names (Iterable[str]) – Итерируемый объект с именами пакетов
- Returns:
Список объектов Package
- Return type:
list[Package]
- set_solver(solver)[source]
Изменить солвер, используемый этим максимайзером.
- Parameters:
solver (SolverType | str | ConstraintSolver) – Тип или экземпляр солвера
- Return type:
None
- set_parser(parser)[source]
Изменить парсер, используемый этим максимайзером.
- Parameters:
parser (PackageParser | str | None) – Тип или экземпляр парсера
- Return type:
None
- set_analyzer(analyzer)[source]
Изменить анализатор, используемый этим максимайзером.
- Parameters:
analyzer (ResultAnalyzer | str | None) – Тип или экземпляр анализатора
- Return type:
None
- get_solver_type()[source]
Получить текущий тип солвера.
- Returns:
Текущий тип солвера
- Return type:
SolverType