# ____________________________________________________________________________________
#
# Pyomo: Python Optimization Modeling Objects
# Copyright (c) 2008-2026 National Technology and Engineering Solutions of Sandia, LLC
# Under the terms of Contract DE-NA0003525 with National Technology and Engineering
# Solutions of Sandia, LLC, the U.S. Government retains certain rights in this
# software. This software is distributed under the 3-clause BSD License.
# ____________________________________________________________________________________
from collections.abc import Callable
from typing import Any, NamedTuple, Protocol, TypeVar
from pyomo.common.enums import Enum
from pyomo.core.base.constraint import ConstraintData
from pyomo.core.base.var import VarData
[docs]
class BoundType(Enum):
EQ = 0
LO = 1
UP = 2
[docs]
class StructureType(Enum):
CONSTANT = 0
LINEAR = 1
QUADRATIC = 2
[docs]
class ValueType(Enum):
PRIMAL = 0
DUAL = 1
@property
def sign(self) -> float:
return -1.0 if self == ValueType.DUAL else 1.0
ItemData = VarData | ConstraintData
ItemType = TypeVar("ItemType", bound=ItemData)
[docs]
class Function(Protocol):
def evaluate(self, x: list[float]) -> float: ...
def gradient(self, x: list[float]) -> list[float]: ...
def hessian(self, x: list[float], mu: float) -> list[float]: ...
[docs]
class CallbackRequest(Protocol):
x: list[float]
sigma: float
lambda_: list[float]
[docs]
class CallbackResult(Protocol):
obj: float
c: list[float]
objGrad: list[float]
jac: list[float]
hess: list[float]
CallbackFunction = Callable[[Any, Any, CallbackRequest, CallbackResult, Any], int]
[docs]
class Callback(NamedTuple):
func: CallbackFunction
grad: CallbackFunction
hess: CallbackFunction