Skip to content

MAINT: __package____spec__.parent#415

Merged
ev-br merged 1 commit intodata-apis:mainfrom
DimitriPapadopoulos:__package__
Apr 8, 2026
Merged

MAINT: __package____spec__.parent#415
ev-br merged 1 commit intodata-apis:mainfrom
DimitriPapadopoulos:__package__

Conversation

@DimitriPapadopoulos
Copy link
Copy Markdown
Contributor

Remove deprecated __package__, scheduled for removal in Python 3.15.

Copy link
Copy Markdown
Contributor

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

Updates internal dynamic imports to avoid using the deprecated __package__ attribute, aligning with Python’s planned removal of module.__package__ in 3.15.

Changes:

  • Replace __package__ + ".linalg" / __package__ + ".fft" with __spec__.parent + ... in affected namespace packages.
  • Apply the same update consistently across NumPy, Torch, Dask Array, and CuPy shims.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

File Description
array_api_compat/numpy/__init__.py Switch dynamic absolute imports for linalg/fft to use __spec__.parent.
array_api_compat/torch/__init__.py Same replacement for Torch namespace wrapper imports.
array_api_compat/dask/array/__init__.py Same replacement for Dask Array namespace wrapper imports.
array_api_compat/cupy/__init__.py Same replacement for CuPy namespace wrapper imports.

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

Copy link
Copy Markdown
Member

@ev-br ev-br left a comment

Choose a reason for hiding this comment

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

According to the docs, __spec__.parent does exist in python 3.10, which is our minimum supported version, https://docs.python.org/3.10/library/importlib.html#importlib.machinery.ModuleSpec.parent
The wording in the 3.15 doc links does indicate that __spec__.parent is recommended and that __package__ might even disappear at some point.
There seems to be (or was) some difference between __spec__.parent and __package__ in one being writeable and the other read-only, but we're not attempting to mutate it anyway. Thus we can make the change sooner than later. Thank you @DimitriPapadopoulos

@ev-br ev-br added this to the 1.15 milestone Apr 8, 2026
@ev-br ev-br merged commit a506e9c into data-apis:main Apr 8, 2026
31 of 32 checks passed
@DimitriPapadopoulos DimitriPapadopoulos deleted the __package__ branch April 8, 2026 12:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants