classification
Title: os.stat / os.lstat always present, but code checks hastattr(os, 'stat') / hasattr(os, 'lstat')
Type: Stage: resolved
Components: Library (Lib) Versions: Python 3.8
process
Status: closed Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: Anthony Sottile, giampaolo.rodola, gregory.p.smith
Priority: normal Keywords: patch, patch

Created on 2019-01-21 21:42 by Anthony Sottile, last changed 2019-02-26 00:07 by giampaolo.rodola. This issue is now closed.

Pull Requests
URL Status Linked Edit
PR 11643 merged Anthony Sottile, 2019-01-21 21:59
PR 11643 merged Anthony Sottile, 2019-01-21 21:59
Messages (5)
msg334182 - (view) Author: Anthony Sottile (Anthony Sottile) * Date: 2019-01-21 21:42
Unless I'm reading incorrectly: 

https://github.com/python/cpython/blob/7a2368063f25746d4008a74aca0dc0b82f86ff7b/Modules/clinic/posixmodule.c.h#L30-L31

https://github.com/python/cpython/blob/7a2368063f25746d4008a74aca0dc0b82f86ff7b/Modules/clinic/posixmodule.c.h#L68-L69
msg334184 - (view) Author: Anthony Sottile (Anthony Sottile) * Date: 2019-01-21 21:50
looks true for os.chmod as well: https://github.com/python/cpython/blob/7a2368063f25746d4008a74aca0dc0b82f86ff7b/Modules/clinic/posixmodule.c.h#L327-L328
msg334226 - (view) Author: Gregory P. Smith (gregory.p.smith) * (Python committer) Date: 2019-01-22 18:34
I suspect these conditionals are very old and came from times when we supported some platforms that did not have these APIs.

Are they present on all CPython supported platforms today?

Windows is probably the only one left to verify.

BSD/Linux/Un*xes and modern macOS are POSIX.

macOS <= 9 (classic) has long since died.
msg334229 - (view) Author: Anthony Sottile (Anthony Sottile) * Date: 2019-01-22 19:23
yep! did my due diligence there, you can check my work on https://github.com/python/cpython/pull/11643

all platforms have these functions since `posixmodule.c` is always compiled and the functions in question are not guarded by preprocessor directives in any way
msg336584 - (view) Author: Giampaolo Rodola' (giampaolo.rodola) * (Python committer) Date: 2019-02-26 00:07
A BB failed. Looks like it's unrelated with this change:
https://buildbot.python.org/all/#/builders/99/builds/2198
History
Date User Action Args
2019-02-26 00:07:17giampaolo.rodolasetkeywords: patch, patch
nosy: + giampaolo.rodola
messages: + msg336584

2019-02-25 22:55:35Anthony Sottilesetstatus: open -> closed
stage: patch review -> resolved
2019-01-22 19:23:36Anthony Sottilesetmessages: + msg334229
2019-01-22 18:34:30gregory.p.smithsetkeywords: patch, patch
nosy: + gregory.p.smith
messages: + msg334226

2019-01-21 21:59:44Anthony Sottilesetkeywords: + patch
stage: patch review
pull_requests: + pull_request11423
2019-01-21 21:59:41Anthony Sottilesetkeywords: + patch
stage: (no value)
pull_requests: + pull_request11422
2019-01-21 21:50:09Anthony Sottilesetmessages: + msg334184
2019-01-21 21:42:34Anthony Sottilecreate