pyomo-pounce
Pyomo solver plugin for POUNCE, a pure-Rust interior-point NLP solver (a Rust port of IPOPT).
POUNCE speaks the AMPL NL/SOL protocol, so Pyomo drives it through the AMPL Solver Library interface — exactly how Pyomo integrates with IPOPT.
Installation
pip install pyomo-pounce
That single command pulls in the pounce-solver dependency, which
ships a per-platform wheel bundling the pounce executable. After
install, pounce is on your PATH and Pyomo finds it automatically.
Usage
import pyomo_pounce # registers the solver — REQUIRED before SolverFactory('pounce')
from pyomo.environ import *
model = ConcreteModel()
model.x = Var(initialize=0.5)
model.obj = Objective(expr=(model.x - 2)**2)
solver = SolverFactory('pounce')
result = solver.solve(model, tee=True)
print(f"x* = {value(model.x)}") # 2.0
import pyomo_pounceis required. Without it,SolverFactory('pounce')raises a clearUnknownSolver/ "plugin not registered" error — it does not silently run some otherpounce. With it imported, the plugin runs thepouncebinary bundled in thepounce-solverwheel, independent ofPATH. Only a source/dev install without that wheel falls back to apounceonPATH, in which case the plugin warns.To see exactly which binary will run (and whether a stale or unrelated
pounceearlier onPATHwould shadow it), call:import pyomo_pounce pyomo_pounce.check_binary()The check compares the git commit embedded in
pounce --about, not the version string — two builds can share the sameX.Y.Zwhile differing in behavior (as a binary from before/after a fix does).
Solver Options
Pass options the same way as IPOPT:
solver = SolverFactory('pounce')
solver.options['max_iter'] = 1000
solver.options['tol'] = 1e-10
solver.options['print_level'] = 5
Options are forwarded to POUNCE's OptionsList (ipopt.opt-compatible
keys).
Local development / unsupported platforms
If pounce-solver does not ship a wheel for your platform, the pip
install fails on the dependency. Two workarounds:
-
Build POUNCE from source and put it on
PATH— the plugin resolvespounceviashutil.which, so any binary onPATHworks:# in the pounce repo cargo build --release --bin pounce export PATH="$PWD/target/release:$PATH" pip install --no-deps pyomo-pounce pyomo
-
Install
pounce-solverfrom source via maturin:cd pounce/python && maturin develop --release # then `cargo install --path ../crates/pounce-cli` to get the CLI # since maturin develop does not bundle the binary. pip install pyomo-pounce
License
EPL-2.0, same as POUNCE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyomo_pounce-0.9.0.tar.gz.
File metadata
- Download URL: pyomo_pounce-0.9.0.tar.gz
- Upload date:
- Size: 57.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e18bd962ce2094c9796fc3ea807dbebea29b77947d59f42378fc1556fc47bde6
|
|
| MD5 |
1c7fdd54b1676ba74178c9179dff8978
|
|
| BLAKE2b-256 |
ffe97ce90951ebcadb900f2046953c939f0a2182cb630357013ddcb307daccd0
|
Provenance
The following attestation bundles were made for pyomo_pounce-0.9.0.tar.gz:
Publisher:
release-pyomo-pounce.yml on jkitchin/pounce
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyomo_pounce-0.9.0.tar.gz -
Subject digest:
e18bd962ce2094c9796fc3ea807dbebea29b77947d59f42378fc1556fc47bde6 - Sigstore transparency entry: 2236116669
- Sigstore integration time:
-
Permalink:
jkitchin/pounce@2bfda1fa07e94ef1839358cd00cef688b2dc403f -
Branch / Tag:
refs/tags/pyomo-pounce-v0.9.0 - Owner: https://github.com/jkitchin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-pyomo-pounce.yml@2bfda1fa07e94ef1839358cd00cef688b2dc403f -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyomo_pounce-0.9.0-py3-none-any.whl.
File metadata
- Download URL: pyomo_pounce-0.9.0-py3-none-any.whl
- Upload date:
- Size: 40.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06fcd6c13126d398f169a8e581424b23ef4898e3810997c0239b6003f632057a
|
|
| MD5 |
bd794b6bda7df3db21f8452e6fe96f45
|
|
| BLAKE2b-256 |
8b8f38af63bb8c32f3b85825d832e213187e7655ffba27b27e004b332edf4b1a
|
Provenance
The following attestation bundles were made for pyomo_pounce-0.9.0-py3-none-any.whl:
Publisher:
release-pyomo-pounce.yml on jkitchin/pounce
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyomo_pounce-0.9.0-py3-none-any.whl -
Subject digest:
06fcd6c13126d398f169a8e581424b23ef4898e3810997c0239b6003f632057a - Sigstore transparency entry: 2236116719
- Sigstore integration time:
-
Permalink:
jkitchin/pounce@2bfda1fa07e94ef1839358cd00cef688b2dc403f -
Branch / Tag:
refs/tags/pyomo-pounce-v0.9.0 - Owner: https://github.com/jkitchin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-pyomo-pounce.yml@2bfda1fa07e94ef1839358cd00cef688b2dc403f -
Trigger Event:
push
-
Statement type: