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.6.1.tar.gz (121.2 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.6.1-py3-none-any.whl (83.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: package_maximizer-0.6.1.tar.gz
  • Upload date:
  • Size: 121.2 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.6.1.tar.gz
Algorithm Hash digest
SHA256 15207a3cd337f701bd806ebd68a6b45c3999aea8c8b0e8970ad6d4eec86d0db2
MD5 b6b92f6e32bac6cfc8be32d66e398f08
BLAKE2b-256 cf9669bb48a84da67d151fdd33ba0ce5659c5a83890ea4a1d63a1f8b130ab1b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for package_maximizer-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bd6418ca1d8cf3c8b64b58287b2b6c58b71082be8e1d4158c314fb1ca175ab1b
MD5 a653db6c0803cf7fc86a1d3fa19c0184
BLAKE2b-256 47f815219a7089861f859ac8c13f05ac923aa5039dba49c791611cf906342e61

See more details on using hashes here.

Release history Release notifications | RSS feed

0.7.1

2 files

0.7.0

2 files

This release

0.6.1 This release

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