8000 test(phase1): solver test coverage + weighted-conflict bugfixes by dominicusin · Pull Request #51 · dominicusin/package-maximizer · GitHub
[go: up one dir, main page]

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion package_maximizer/solvers/enhanced_greedy.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,18 @@ def solve_with_weights(
if self.conflict_strategy == 'skip':
continue
elif self.conflict_strategy == 'remove':
# Удаляем конфликтующие пакеты
# В weighted-режиме не вытесняем более тяжёлые пакеты:
# если добавляемый pkg легче любого конфликтующего уже
# выбранного — пропускаем его (оставляем тяжёлые).
if weights:
pkg_w = weights.get(pkg.name, 1.0)
heavier_conflict = any(
weights.get(c, 1.0) > pkg_w
for c in (pkg.conflicts or [])
if c in selected_set
)
if heavier_conflict:
continue
selected = self._remove_conflicting(pkg, selected, selected_set, selected_versions)

# Проверяем зависимости
Expand Down
3 changes: 3 additions & 0 deletions package_maximizer/solvers/minisat_solver.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,9 @@ def solve_with_weights(
selected_names = set()

for pkg in package_list:
# Не добавляем, если pkg конфликтует с уже выбранными
if any(c in selected_names for c in (pkg.conflicts or [])):
continue
# Проверяем, можно ли добавить этот пакет
test_packages = [
p for p in package_list
Expand Down
4 changes: 2 additions & 2 deletions package_maximizer/solvers/z3_solver.py