You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Remove documentation and internal use of the *RESTRICTED constants for PyMemberDef's flags field #80536
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=Nonecreated_at=<Date2019-03-18.19:18:19.243>labels= ['extension-modules', 'interpreter-core', '3.8', 'docs']
title="Remove documentation and internal use of the *RESTRICTED constants for PyMemberDef's flags field"updated_at=<Date2019-03-21.00:25:24.928>user='https://github.com/MojoVampire'
Of those, WRITE_RESTRICTED has been documented incorrectly since Python 3.0a2 (it got renamed to PY_WRITE_RESTRICTED in structmember.h, apparently due to a name clash with VS 2008 on Windows).
Luckily, the constants are useless; AFAICT they were there solely to support restricted mode (via the rexec and Bastion modules). The modules were apparently disabled in Python 2.3 "due to various known and not readily fixable security holes" ( https://docs.python.org/2/library/restricted.html ), and the modules themselves officially deprecated in 2.6, and removed completely in 3.0.
Rather than fixing up the docs, maybe it's time to kill these constants for good? Probably shouldn't remove the definitions in structmember.h (if someone wrote code using them, we shouldn't needlessly break compilation), but the interpreter and standard library should stop setting them, and the documentation for them should be removed.
To be clear, only the constants that include the substring RESTRICTED are useless; READONLY remains useful and should not be removed (though per my suggestion on bpo-36347, it might be good to add an alias for it named PY_READONLY to match the Python C API naming conventions).
changed the title [-]Remove documentation and internal use of the RESTRICTED constants for PyMemberDef's flags field[/-][+]Remove documentation and internal use of the *RESTRICTED constants for PyMemberDef's flags field[/+]on Mar 18, 2019
Yes, they're set. They're never *read* anywhere. My suggestion was to stop setting them (because it gives the impression they do something when reading the docs, when in fact they do nothing), and remove them from the docs.
MojoVampire commented on Mar 21, 2019
MojoVampiremannequin
MannequinAuthor
More actions
Sorry, that should have been "it gives the impression they do something when reading the *source code*"
Activity
MojoVampire commentedon Mar 18, 2019
While looking up background info for bpo-36347, I noticed that the docs for PyMemberDef ( https://docs.python.org/3/extending/newtypes.html#generic-attribute-management ) define the following flags:
Of those, WRITE_RESTRICTED has been documented incorrectly since Python 3.0a2 (it got renamed to PY_WRITE_RESTRICTED in structmember.h, apparently due to a name clash with VS 2008 on Windows).
Luckily, the constants are useless; AFAICT they were there solely to support restricted mode (via the rexec and Bastion modules). The modules were apparently disabled in Python 2.3 "due to various known and not readily fixable security holes" ( https://docs.python.org/2/library/restricted.html ), and the modules themselves officially deprecated in 2.6, and removed completely in 3.0.
Rather than fixing up the docs, maybe it's time to kill these constants for good? Probably shouldn't remove the definitions in structmember.h (if someone wrote code using them, we shouldn't needlessly break compilation), but the interpreter and standard library should stop setting them, and the documentation for them should be removed.
MojoVampire commentedon Mar 18, 2019
To be clear, only the constants that include the substring RESTRICTED are useless; READONLY remains useful and should not be removed (though per my suggestion on bpo-36347, it might be good to add an alias for it named PY_READONLY to match the Python C API naming conventions).
[-]Remove documentation and internal use of the RESTRICTED constants for PyMemberDef's flags field[/-][+]Remove documentation and internal use of the *RESTRICTED constants for PyMemberDef's flags field[/+]matrixise commentedon Mar 20, 2019
Josh, I don't know for the uselessness or not of these macros, but these macros are used.
RESTRICTED is used in Objects/classobject.c and Objects/funcobject.c
PY_WRITE_RESTRICTED is used in Objects/funcobject.c and Objects/methodobject.c
MojoVampire commentedon Mar 21, 2019
Yes, they're set. They're never *read* anywhere. My suggestion was to stop setting them (because it gives the impression they do something when reading the docs, when in fact they do nothing), and remove them from the docs.
MojoVampire commentedon Mar 21, 2019
Sorry, that should have been "it gives the impression they do something when reading the *source code*"
iritkatriel commentedon Feb 18, 2023
This is out of date, see #99014.