Skip to content

Commit d35acc6

Browse files
committed
✨ complete optimize.shgo
1 parent e0b9e36 commit d35acc6

File tree

1 file changed

+35
-23
lines changed

1 file changed

+35
-23
lines changed

scipy-stubs/optimize/_shgo.pyi

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,46 @@
1-
from collections.abc import Callable, Iterable, Mapping, Sequence
2-
from typing import Literal, TypeAlias, TypeVar
1+
from collections.abc import Callable, Iterable, Sequence
2+
from typing import Concatenate, Literal, TypeAlias, TypedDict, TypeVar, type_check_only
33

44
import numpy as np
55
import optype.numpy as onp
6-
from scipy._typing import Untyped, UntypedCallable
6+
from ._constraints import Bounds
77
from ._optimize import OptimizeResult as _OptimizeResult
8-
from ._typing import Constraints
8+
from ._typing import Constraints, MinimizerKwargs
99

1010
__all__ = ["shgo"]
1111

12+
_VT = TypeVar("_VT")
13+
_RT = TypeVar("_RT")
14+
1215
_Float: TypeAlias = float | np.float64
1316
_Float1D: TypeAlias = onp.Array1D[np.float64]
17+
_Fun1D: TypeAlias = Callable[Concatenate[_Float1D, ...], _RT]
1418

15-
_MinimizerKwargs: TypeAlias = Mapping[str, object] # TODO(jorenham): TypedDict
16-
_Options: TypeAlias = Mapping[str, object] # TODO(jorenham): TypedDict
17-
18-
_SamplingMethodName: TypeAlias = Literal["simplicial", "halton", "sobol"]
19-
_SamplingMethodFunc: TypeAlias = Callable[[int, int], onp.ArrayND[np.float64]]
20-
_SamplingMethod: TypeAlias = _SamplingMethodName | _SamplingMethodFunc
21-
22-
_VT = TypeVar("_VT")
23-
_RT = TypeVar("_RT")
19+
@type_check_only
20+
class _SHGOOptions(TypedDict, total=False):
21+
f_min: _Float
22+
f_tol: _Float
23+
maxiter: int
24+
maxfev: int
25+
maxev: int
26+
mmaxtime: _Float
27+
minhgrd: int
28+
symmetry: Sequence[int] | onp.ToBool
29+
jac: _Fun1D[onp.ToFloat1D] | onp.ToBool # gradient
30+
hess: _Fun1D[onp.ToFloat2D]
31+
hessp: Callable[Concatenate[_Float1D, _Float1D, ...], onp.ToFloat1D]
32+
minimize_every_iter: onp.ToBool
33+
local_iter: int
34+
infty_constraints: onp.ToBool
35+
disp: onp.ToBool
2436

2537
###
2638

2739
class OptimizeResult(_OptimizeResult):
2840
x: _Float1D
29-
xl: list[_Float1D]
41+
xl: Sequence[_Float1D]
3042
fun: _Float
31-
funl: list[_Float]
43+
funl: Sequence[_Float]
3244
success: bool
3345
message: str
3446
nfev: int
@@ -38,16 +50,16 @@ class OptimizeResult(_OptimizeResult):
3850
nit: int
3951

4052
def shgo(
41-
func: UntypedCallable,
42-
bounds: Untyped,
53+
func: _Fun1D[onp.ToFloat],
54+
bounds: tuple[onp.ToFloat | onp.ToFloat1D, onp.ToFloat | onp.ToFloat1D] | Bounds,
4355
args: tuple[object, ...] = (),
4456
constraints: Constraints | None = None,
45-
n: int = 100,
46-
iters: int = 1,
57+
n: onp.ToJustInt = 100,
58+
iters: onp.ToJustInt = 1,
4759
callback: Callable[[_Float1D], None] | None = None,
48-
minimizer_kwargs: _MinimizerKwargs | None = None, # TODO(jorenham): TypedDict
49-
options: _Options | None = None, # TODO(jorenham): TypedDict
50-
sampling_method: _SamplingMethod = "simplicial",
60+
minimizer_kwargs: MinimizerKwargs | None = None,
61+
options: _SHGOOptions | None = None,
62+
sampling_method: Callable[[int, int], onp.ToFloat2D] | Literal["simplicial", "halton", "sobol"] = "simplicial",
5163
*,
52-
workers: int | Callable[[Callable[[_VT], _RT], Iterable[_VT]], Sequence[_RT]] = 1,
64+
workers: onp.ToJustInt | Callable[[Callable[[_VT], _RT], Iterable[_VT]], Sequence[_RT]] = 1,
5365
) -> OptimizeResult: ...

0 commit comments

Comments
 (0)