Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Remove documentation and internal use of the *RESTRICTED constants for PyMemberDef's flags field #80536

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
MojoVampire mannequin opened this issue Mar 18, 2019 · 6 comments
Labels
3.8 (EOL) end of life docs Documentation in the Doc dir extension-modules C modules in the Modules dir interpreter-core (Objects, Python, Grammar, and Parser dirs)

Comments

@MojoVampire
Copy link
Mannequin

MojoVampire mannequin commented Mar 18, 2019

BPO 36355
Nosy @matrixise, @MojoVampire

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 = None
closed_at = None
created_at = <Date 2019-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 = <Date 2019-03-21.00:25:24.928>
user = 'https://github.com/MojoVampire'

bugs.python.org fields:

activity = <Date 2019-03-21.00:25:24.928>
actor = 'josh.r'
assignee = 'docs@python'
closed = False
closed_date = None
closer = None
components = ['Documentation', 'Extension Modules', 'Interpreter Core']
creation = <Date 2019-03-18.19:18:19.243>
creator = 'josh.r'
dependencies = []
files = []
hgrepos = []
issue_num = 36355
keywords = []
message_count = 5.0
messages = ['338282', '338283', '338455', '338517', '338518']
nosy_count = 3.0
nosy_names = ['docs@python', 'matrixise', 'josh.r']
pr_nums = []
priority = 'normal'
resolution = None
stage = None
status = 'open'
superseder = None
type = None
url = 'https://bugs.python.org/issue36355'
versions = ['Python 3.8']

@MojoVampire
Copy link
Mannequin Author

MojoVampire mannequin commented 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:

  • READONLY
  • READ_RESTRICTED
  • WRITE_RESTRICTED
  • RESTRICTED

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 MojoVampire mannequin added the 3.8 (EOL) end of life label Mar 18, 2019
@MojoVampire MojoVampire mannequin assigned docspython Mar 18, 2019
@MojoVampire MojoVampire mannequin added docs Documentation in the Doc dir extension-modules C modules in the Modules dir interpreter-core (Objects, Python, Grammar, and Parser dirs) labels Mar 18, 2019
@MojoVampire
Copy link
Mannequin Author

MojoVampire mannequin commented 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).

@MojoVampire MojoVampire mannequin 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 Mar 18, 2019
@matrixise
Copy link
Member

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
Copy link
Mannequin Author

MojoVampire mannequin commented 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
Copy link
Mannequin Author

MojoVampire mannequin commented Mar 21, 2019

Sorry, that should have been "it gives the impression they do something when reading the *source code*"

@ezio-melotti ezio-melotti transferred this issue from another repository Apr 10, 2022
@iritkatriel
Copy link
Member

This is out of date, see #99014.

@iritkatriel iritkatriel closed this as not planned Won't fix, can't repro, duplicate, stale Feb 18, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
3.8 (EOL) end of life docs Documentation in the Doc dir extension-modules C modules in the Modules dir interpreter-core (Objects, Python, Grammar, and Parser dirs)
Projects
None yet
Development

No branches or pull requests

2 participants