Skip to content

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

Open
Hrk84ya wants to merge 2 commits intopytest-dev:mainfrom
Hrk84ya:fix/14456-hasattr-string-literal-typo
Open

fix(python_api): correct hasattr call for __array_interface__ check#14459
Hrk84ya wants to merge 2 commits intopytest-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 pytest-dev#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)
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