Web API
Package Maximizer Web API — Flask-based REST API with API-key authentication.
- class package_maximizer.web.app.RateLimiter(max_requests=100, window=60.0)[source]
Bases:
objectFixed-window rate limiter keyed by client identity.
- Parameters:
max_requests (int)
window (float)
- package_maximizer.web.app.validate_maximize_payload(data)[source]
Validate the JSON body for /api/v1/maximize.
Returns
(cleaned_pkgs, conflicts, weights)when valid, or raises aValueErrorwhose message is client-safe.- Parameters:
data (Any)
- Return type:
tuple[list[str], list, dict | None]
- package_maximizer.web.app.list_solvers()[source]
List all available solvers.
- Return type:
tuple[dict, int]
- package_maximizer.web.app.list_parsers()[source]
List all available parsers.
- Return type:
tuple[dict, int]
- package_maximizer.web.app.list_managers()[source]
List all available package managers (parsers).
- Return type:
tuple[dict, int]
- package_maximizer.web.app.maximize_post()[source]
Maximize packages from JSON body.
Expected JSON body:
{ "packages": ["pkg1", "pkg2", "pkg3"], "manager": "apt", "solver": "greedy", "conflicts": [["pkg1", "pkg2"]], "depends": [["pkg1", "pkg2"]], "weights": {"pkg1": 2.0, "pkg2": 1.5}, "explain": false }
- Return type:
tuple[dict, int]
- package_maximizer.web.app.propose_post()[source]
Propose optimal package set with automatic metadata extraction.
Expected JSON body:
{ "packages": ["requests", "certifi"], "manager": "apt", "solver": "greedy", "explain": false }
- Return type:
tuple[dict, int]
- package_maximizer.web.app.maximize_get()[source]
GET /api/maximize?packages=vim,nano&manager=apt&solver=pulp
- Return type:
tuple[dict, int]
- package_maximizer.web.app.export_post()[source]
Maximize packages and return the result in JSON/CSV/GraphML.
Body is the same as /api/v1/maximize plus an
formatfield (json | csv | graphml).- Return type:
tuple[dict, int] | tuple[str, int] | tuple[str, int, dict[str, str]]
- package_maximizer.web.app.benchmark_post()[source]
Run benchmark on specified solvers.
- Return type:
tuple[dict, int]
- package_maximizer.web.app.cache_stats()[source]
Get cache statistics.
- Return type:
tuple[dict, int]
- package_maximizer.web.app.analyze_post()[source]
Analyze package conflicts and dependencies.
Expected JSON body:
{ "packages": ["pkg1", "pkg2"], "manager": "apt", "solver": "greedy", "metadata": false, "conflicts": [["pkg1", "pkg2"]], "depends": [["pkg1", "dep1"]] }
- Return type:
tuple[dict, int]
- package_maximizer.web.app.compare_post()[source]
Compare all available solvers on the given package set.
Expected JSON body:
{ "packages": ["pkg1", "pkg2"], "manager": "apt", "metadata": false }
- Return type:
tuple[dict, int]
- package_maximizer.web.app.openapi_spec()[source]
Machine-readable API description (OpenAPI 3.0 subset).
- Return type:
tuple[dict, int]
- package_maximizer.web.app.api_docs()[source]
Minimal human-readable API documentation page.
- Return type:
tuple[str, int]
- package_maximizer.web.app.run_app(host='127.0.0.1', port=5000, debug=False)[source]
Run the Flask application.
- Parameters:
host (str)
port (int)
debug (bool)
- Return type:
None
- package_maximizer.web.app.run(host='127.0.0.1', port=5000, debug=False)
Run the Flask application.
- Parameters:
host (str)
port (int)
debug (bool)
- Return type:
None