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()[source]

Получить текущий экземпляр солвера.

Returns:

Текущий экземпляр солвера

get_solver_type()[source]

Получить текущий тип солвера.

Returns:

Текущий тип солвера

Return type:

SolverType

get_parser()[source]

Получить текущий экземпляр парсера.

Returns:

Текущий экземпляр парсера

get_analyzer()[source]

Получить текущий экземпляр анализатора.

Returns:

Текущий экземпляр анализатора

clear_cache()[source]

Очистить кэш.

Return type:

None