Skip to content

fix(python_api): correct hasattr call for __array_interface__ check#14459

Closed
Hrk84ya wants to merge 3 commits into
pytest-dev:mainfrom
Hrk84ya:fix/14456-hasattr-string-literal-typo
Closed

fix(python_api): correct hasattr call for __array_interface__ check#14459
Hrk84ya wants to merge 3 commits into
pytest-dev:mainfrom
Hrk84ya:fix/14456-hasattr-string-literal-typo

Conversation

@Hrk84ya
Copy link
Copy Markdown

@Hrk84ya Hrk84ya commented May 10, 2026

Closes #14456

The second hasattr call in _as_numpy_array incorrectly passed the string literal "obj" instead of the variable obj when checking for array_interface. This caused objects implementing only array_interface (without array) to not be recognized as numpy-like arrays by pytest.approx.

Fix typo in hasattr call: change hasattr("obj", ...) to hasattr(obj, ...)
Ensures array_interface attribute is checked on the actual object instead of the string literal "obj"
Prevents incorrect behavior when converting objects to numpy arrays

…ng "obj"

Closes #14456

The second hasattr call in _as_numpy_array incorrectly passed the
string literal "obj" instead of the variable obj when checking for
__array_interface__. This caused objects implementing only
__array_interface__ (without __array__) to not be recognized as
numpy-like arrays by pytest.approx.

Co-authored-by: Kiro (AI) <noreply@kiro.dev>
Copilot AI review requested due to automatic review settings May 10, 2026 07:07
@psf-chronographer psf-chronographer Bot added the bot:chronographer:provided (automation) changelog entry is part of PR label May 10, 2026
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes a bug in pytest’s approx NumPy-detection logic where _as_numpy_array accidentally checked __array_interface__ on the string literal "obj" instead of the actual object, preventing some array-like objects from being treated as NumPy-like.

Changes:

  • Corrected the hasattr call to check __array_interface__ on obj.
  • Added a towncrier bugfix fragment documenting the user-visible impact.
  • Added the contributor to AUTHORS.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
src/_pytest/python_api.py Fixes _as_numpy_array detection so pytest.approx recognizes objects implementing __array_interface__.
changelog/14456.bugfix.rst Adds a user-facing changelog entry for the bugfix.
AUTHORS Adds the contributor name.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/_pytest/python_api.py
Comment on lines +909 to 910
elif hasattr(obj, "__array__") or hasattr(obj, "__array_interface__"):
return np.asarray(obj)
@Hrk84ya Hrk84ya closed this by deleting the head repository May 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot:chronographer:provided (automation) changelog entry is part of PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

_as_numpy_array: hasattr uses string literal 'obj' instead of variable

2 participants