Skip to main content

Package Maximizer

Python Version License PyPI PyPI Downloads ReadTheDocs GitHub Issues GitHub Stars

Package Maximizer — это модульная система для решения задачи максимизации непротиворечивого множества пакетов с использованием различных SAT/ILP/SMT солверов.

🎯 Назначение

Система позволяет:

  • Находить максимальное непротиворечивое подмножество пакетов
  • Учитывать конфликты между пакетами
  • Работать с разными пакетными менеджерами (APT, Pacman, DNF, Brew, Snap, Flatpak, Cargo, npm, pip, gem и др.)
  • Использовать различные алгоритмы решения (жадный, SAT, ILP, SMT, CP-SAT)
  • Учитывать версионные ограничения и зависимости
  • Экспортировать результаты в JSON, CSV и GraphML
  • Парсить вывод 22+ систем управления пакетами

✨ Возможности

🔧 Поддерживаемые пакетные менеджеры (22)

Linux:

  • APT (Debian/Ubuntu) — apt list --installed
  • Pacman (Arch Linux) — pacman -Q
  • DNF (Fedora/RHEL 8+) — dnf list installed
  • Yum (RHEL/CentOS 7) — yum list installed
  • Zypper (openSUSE/SUSE) — zypper search
  • Apk (Alpine Linux) — apk list

macOS:

  • Brew (Homebrew) — brew list

Windows:

  • Winget (Windows 10+) — winget list
  • Scoopscoop list
  • Chocolateychoco list

Кроссплатформенные (языковые):

  • Cargo (Rust) — cargo metadata / Cargo.lock
  • Npm (Node.js) — npm ls --json
  • Yarn (Node.js) — yarn list --depth=0
  • Pip (Python) — pip list / pip freeze
  • Gem (Ruby) — gem list
  • Composer (PHP) — composer show --installed

C++:

  • Vcpkgvcpkg list
  • Conanconan search
  • NuGet (.NET) — dotnet list package

Контейнеры / универсальные:

  • Snapsnap list
  • Flatpakflatpak list
  • Conda (Python) — conda list
  • Portage (Gentoo) — emerge -p

🧠 Поддерживаемые солверы

  • GreedySolver — Базовый жадный алгоритм
  • EnhancedGreedySolver — Улучшенный жадный алгоритм с поддержкой версий
  • Z3Solver — SMT-солвер на основе Z3
  • PulPSolver — ILP-солвер на основе PuLP
  • ORToolsSolver — CP-SAT солвер на основе OR-Tools
  • MaxSatSolver — SAT-солвер на основе MaxSAT
  • MiniSatSolver — SAT-солвер на основе MiniSat

📊 Дополнительные функции

  • ✅ Анализ результатов (ResultAnalyzer)
  • ✅ Кэширование (CacheManager)
  • ✅ Бенчмаркинг (BenchmarkRunner)
  • ✅ Интеграция с реальными репозиториями (RealRepoIntegration)
  • ✅ Поддержка версионных ограничений
  • ✅ CLI интерфейс

📦 Установка

# Клонирование репозитория
git clone https://github.com/dominicusin/package-maximizer.git
cd package-maximizer

# Установка в режим разработки
pip install -e .

# Установка дополнительных зависимостей (для всех солверов)
pip install z3 python-sat pulp ortools

Варианты установки зависимостей

Команда Что устанавливает
pip install -e . Только основные зависимости
pip install -e ".[solvers]" Солверы (Z3, PuLP, OR-Tools)
pip install -e ".[web]" Веб-интерфейс (Flask)
pip install -e ".[dev]" Инструменты разработки
pip install -e ".[all]" Все зависимости
pip install -r requirements-core.txt Только ядро
pip install -r requirements-solvers.txt Только солверы
pip install -r requirements-web.txt Только веб
pip install -r requirements-dev.txt Только dev-инструменты

🚀 Быстрый старт

Использование через Python API

from package_maximizer import PackageMaximizer, Package

# Создание пакетов
pkg1 = Package(name="nginx", conflicts=["apache2"])
pkg2 = Package(name="apache2", conflicts=["nginx"])
pkg3 = Package(name="python3")
pkg4 = Package(name="postgresql")

# Создание максимайзера
maximizer = PackageMaximizer(
    manager='apt',
    solver='z3'  # или 'greedy', 'pulp', 'ortools', 'maxsat', 'minisat'
)

# Максимизация
result = maximizer.maximize([pkg1, pkg2, pkg3, pkg4])
print(f"Выбранные пакеты: {[p.name for p in result]}")
# Вывод: ['python3', 'postgresql', 'nginx'] или ['python3', 'postgresql', 'apache2']

Использование через CLI

# Максимизация пакетов
package-maximizer nginx apache2 python3 postgresql -c nginx,apache2 -s z3

# Просмотр доступных солверов
package-maximizer list-solvers

# Просмотр доступных парсеров
package-maximizer list-parsers

# Просмотр поддерживаемых пакетных менеджеров (22)
package-maximizer list-managers

# Проверка версии
package-maximizer version

# Бенчмаркинг
package-maximizer benchmark --solvers greedy,z3 --packages 100 --runs 5

# Работа с реальными репозиториями
package-maximizer list-installed --manager apt --limit 10
package-maximizer search nginx --manager apt
package-maximizer info nginx --manager apt
package-maximizer check-updates --manager apt

🌐 REST API (веб-интерфейс)

Запуск сервера

pip install -e ".[web]"
pm-web

Аутентификация

Все эндпоинты (кроме /api/health) требуют API-ключ в заголовке X-API-Key.

Эндпоинты

Метод Эндпоинт Описание
GET /api/health Health check
GET /api/v1/solvers Список солверов
GET /api/v1/parsers Список парсеров
POST /api/v1/maximize Максимизация
GET /api/maximize Максимизация (query params)
POST /api/v1/benchmark Бенчмаркинг
GET /api/v1/cache/stats Статистика кэша
DELETE /api/v1/cache Очистка кэша

Примеры

curl -X POST http://localhost:5000/api/v1/maximize \
  -H "Content-Type: application/json" \
  -H "X-API-Key: dev-key-change-in-production" \
  -d '{"packages": ["vim", "emacs", "nano"], "solver": "greedy", "conflicts": [["vim", "emacs"]]}'

📊 Сравнение солверов

Солвер Тип Скорость Точность Зависимости
Greedy Жадный ⭐⭐⭐⭐⭐ ⭐⭐⭐ Встроен
EnhancedGreedy Жадный+ ⭐⭐⭐⭐ ⭐⭐⭐⭐ Встроен
Z3 SMT ⭐⭐⭐ ⭐⭐⭐⭐⭐ pip install z3
PuLP ILP ⭐⭐ ⭐⭐⭐⭐⭐ pip install pulp
OR-Tools CP-SAT ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ pip install ortools
MaxSAT SAT ⭐⭐⭐ ⭐⭐⭐⭐ pip install python-sat
MiniSat SAT ⭐⭐⭐ ⭐⭐⭐⭐ pip install python-sat

🔧 Конфигурация

Установка всех зависимостей

pip install z3 python-sat pulp ortools

Минимальная установка

pip install .  # Только базовые зависимости

🧪 Тестирование

# Запуск всех тестов
python -m pytest tests/ -v

# Запуск конкретного модуля
python -m pytest tests/test_solvers.py -v

# Просмотр покрытия
python -m pytest tests/ --cov=package_maximizer --cov-report=html

📜 Лицензия

Проект распространяется под лицензией MIT. Подробности в файле LICENSE.

🤝 Вклад в проект

Приветствуются:

  • Сообщения об ошибках
  • Предложения по улучшению
  • Pull Requests

Перед созданием PR:

  1. Запустите тесты: python -m pytest tests/
  2. Проверьте форматирование: black .
  3. Проверьте линтеры: flake8 .

📞 Контакты

Ссылка Описание
GitHub dominicusin/package-maximizer
WWW dominicusin.github.io/package-maximizer
PyPI package-maximizer
ReadTheDocs docs
Email team@package-maximizer.dev

🎉 Благодарности


Package Maximizer — Ваш помощник в управлении пакетами! 🚀

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

package_maximizer-0.7.0.tar.gz (122.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

package_maximizer-0.7.0-py3-none-any.whl (81.2 kB view details)

Uploaded Python 3

File details

Details for the file package_maximizer-0.7.0.tar.gz.

File metadata

  • Download URL: package_maximizer-0.7.0.tar.gz
  • Upload date:
  • Size: 122.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for package_maximizer-0.7.0.tar.gz
Algorithm Hash digest
SHA256 e795a45df965f405ece363e53c7b911ed01c72ee17b950c14ca33d0719b6bd28
MD5 449338d6d8547bbeb8a368c8156990d6
BLAKE2b-256 ade5ad0fc436bc2a85d56f845f66b8ff29657ec5742bc38de0b536ad4397b36c

See more details on using hashes here.

File details

Details for the file package_maximizer-0.7.0-py3-none-any.whl.

File metadata

File hashes

Hashes for package_maximizer-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 215fa547e7827ace9dd3799afee382de3886f3f5ce8fd31306f94ddd1af5b6d3
MD5 255104bfc384ed1a186c7f511f1b9abd
BLAKE2b-256 de870ea8853a3dbdc494280c645a445f3fbd086f0deade9bfdcc1ab478f2452c

See more details on using hashes here.

Release history Release notifications | RSS feed

0.7.1

2 files

This release

0.7.0 This release

2 files

0.6.1

2 files

0.6.0

2 files

0.5.0

2 files

0.1.1

2 files

0.1.0

2 files

0.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page