FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

gh-105733: Deprecate ctypes SetPointerType() and ARRAY() by vstinner · Pull Request #105734 · python/cpython · GitHub

/ cpython Public

gh-105733: Deprecate ctypes SetPointerType() and ARRAY() - #105734

Merged
vstinner merged 1 commit into
python:mainfrom
vstinner:ctypes_deprecate
Jun 13, 2023
Merged

gh-105733: Deprecate ctypes SetPointerType() and ARRAY()#105734
vstinner merged 1 commit into
python:mainfrom
vstinner:ctypes_deprecate

Conversation

vstinner commented Jun 13, 2023
edited by github-actions Bot
Loading

Copy link
Copy Markdown
Member

Copy link
Copy Markdown
Member Author

A code search on SetPointerType in PyPI top 5,000 projects (2023-04-13) found 0 matching lines (in 0 projects).

A code search on ctypes.ARRAY regex in PyPI top 5,000 projects (2023-04-13) found 0 matching lines (in 0 projects).

It seems like a very low number of projects will be affected by this change.

cc @hugovk

vstinner enabled auto-merge (squash) June 13, 2023 17:59
vstinner merged commit 2211454 into python:main Jun 13, 2023
vstinner deleted the ctypes_deprecate branch June 13, 2023 18:35

Copy link
Copy Markdown
Member Author

Thanks for the review @hugovk.

Comment thread Lib/ctypes/__init__.py
Comment on lines 316 to 319
def ARRAY(typ, len):
import warnings
warnings._deprecated("ctypes.ARRAY", remove=(3, 15))
return typ * len

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Do you think there's a high expected maintenance overhead or security risk here?

Per PEP 387:

If the expected maintenance overhead and security risk of the deprecated behavior is small (e.g. an old function is reimplemented in terms of a new, more general one), it can stay indefinitely (or until the situation changes).

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

it's not a big maintenance burden nor a securty issue, why do you ask?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

I ask to see if there's a special reason for remove=(3, 15), or if it can be relaxed.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

What do you propose? To postpone the removal to Python 3.16?

On PyPI top 8,000 projects (at 2024-03-16), I found only 2 projects using ctypes.ARRAY. I search for regex ctypes.ARRAY|\<ARRAY\> (and excluded unrelated lines).

  • astroid (3.1.0)
  • pwntools (4.12.0)

It's about two lines:

astroid-3.1.0.tar.gz: astroid-3.1.0/tests/brain/test_ctypes.py: ctypes.ARRAY(3, 2)
pwntools-4.12.0.tar.gz: pwntools-4.12.0/pwnlib/adb/bootloader.py: imgarray = ctypes.ARRAY(img_info, self.num_images)

Before the function was only deprecated with a comment:

# XXX Deprecated
def ARRAY(typ, len):
    return typ * len

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

I'll propose to follow the part of PEP 387 I quoted above. Alternatively, since this does break known projects, to soft-deprecate instead.

But I plan to propose that in the beta period, right now I'm only gathering info. Thanks for the answer!

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants


Back | FazBrowse Home | New Git URL