Accept typed callables as scalar objectives - #111
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Problemnow accepts a typed scalar callable throughobjective=and normalizes it at construction into the existingObjectiveand evaluation-protocol path.This keeps callable convenience at the public boundary without adding another execution model. Direction handling, failure recording, evaluation accounting, diagnostics, and the direct scalar sequential fast path continue to use the established contracts. Callable-backed problems also retain stable equality and hashing when they wrap the same callable object.
The README, quickstart, evaluator guide, and changelog now show the shorter callable form and explain the portability boundary. Importable module-level functions remain the conservative choice when evaluation may cross process or MPI boundaries.
Validation
uv run ruff check --extend-select I,UP pyproject.toml src tests .github/scriptsuv run ruff format --check pyproject.toml src tests .github/scriptsuv run --extra test pre-commit run --all-filesuv run basedpyrightuv run pytest(1702 passed)uv run mkdocs build --strictCloses #96