-
Notifications
You must be signed in to change notification settings - Fork 25.6k
Replace a platform.system() check with sys.platform #51766
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
Closed
Conversation
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
Summary: Check if we are on Windows using `sys.platform` rather than `platform.system()`. Even though `platform.system()` is more modern, it has a few downsides: this performs a runtime check of the platform type, which has non-zero overhead. On Linux it actually executes the separate `/bin/uname` process. On the other hand `sys.platform` is determined when the Python interpreter is compiled, so this is a simple hard-coded string. Because it is a runtime check, `platform.system()` checks also cannot be analyzed by static type checkers like Pyre and Mypy. These type checkers do understand `sys.platform` checks, and can correctly avoid complaining about code paths that use platform-specific modules and functions. e.g., they can avoid complaining about `ctypes.WinDLL` not existing on Linux if its use is guarded by a `sys.platform` check. Test Plan: Ran tests on Linux, and will check CI test results. [ghstack-poisoned]
💊 CI failures summary and remediationsAs of commit 46fc0bb (more details on the Dr. CI page):
This comment was automatically generated by Dr. CI (expand for details).Follow this link to opt-out of these comments for your Pull Requests.Please report bugs/suggestions to the (internal) Dr. CI Users group. |
This was referenced Feb 5, 2021
Summary: Check if we are on Windows using `sys.platform` rather than `platform.system()`. Even though `platform.system()` is more modern, it has a few downsides: this performs a runtime check of the platform type, which has non-zero overhead. On Linux it actually executes the separate `/bin/uname` process. On the other hand `sys.platform` is determined when the Python interpreter is compiled, so this is a simple hard-coded string. Because it is a runtime check, `platform.system()` checks also cannot be analyzed by static type checkers like Pyre and Mypy. These type checkers do understand `sys.platform` checks, and can correctly avoid complaining about code paths that use platform-specific modules and functions. e.g., they can avoid complaining about `ctypes.WinDLL` not existing on Linux if its use is guarded by a `sys.platform` check. Test Plan: Ran tests on Linux, and will check CI test results. Differential Revision: [D26271724](https://our.internmc.facebook.com/intern/diff/D26271724) [ghstack-poisoned]
Summary: Check if we are on Windows using `sys.platform` rather than `platform.system()`. Even though `platform.system()` is more modern, it has a few downsides: this performs a runtime check of the platform type, which has non-zero overhead. On Linux it actually executes the separate `/bin/uname` process. On the other hand `sys.platform` is determined when the Python interpreter is compiled, so this is a simple hard-coded string. Because it is a runtime check, `platform.system()` checks also cannot be analyzed by static type checkers like Pyre and Mypy. These type checkers do understand `sys.platform` checks, and can correctly avoid complaining about code paths that use platform-specific modules and functions. e.g., they can avoid complaining about `ctypes.WinDLL` not existing on Linux if its use is guarded by a `sys.platform` check. Test Plan: Ran tests on Linux, and will check CI test results. Differential Revision: [D26271724](https://our.internmc.facebook.com/intern/diff/D26271724) [ghstack-poisoned]
xsacha
pushed a commit
to xsacha/pytorch
that referenced
this pull request
Mar 31, 2021
Summary: Pull Request resolved: pytorch#51766 Check if we are on Windows using `sys.platform` rather than `platform.system()`. Even though `platform.system()` is more modern, it has a few downsides: this performs a runtime check of the platform type, which has non-zero overhead. On Linux it actually executes the separate `/bin/uname` process. On the other hand `sys.platform` is determined when the Python interpreter is compiled, so this is a simple hard-coded string. Because it is a runtime check, `platform.system()` checks also cannot be analyzed by static type checkers like Pyre and Mypy. These type checkers do understand `sys.platform` checks, and can correctly avoid complaining about code paths that use platform-specific modules and functions. e.g., they can avoid complaining about `ctypes.WinDLL` not existing on Linux if its use is guarded by a `sys.platform` check. ghstack-source-id: 121107705 Test Plan: Ran tests on Linux, and will check CI test results. Reviewed By: mraway Differential Revision: D26271724 Pulled By: simpkins fbshipit-source-id: b86e427e4ceec0324464ba4bc88b95d5813172d0
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Stack from ghstack:
Summary:
Check if we are on Windows using
sys.platform
rather thanplatform.system()
. Even thoughplatform.system()
is more modern, ithas a few downsides: this performs a runtime check of the platform type,
which has non-zero overhead. On Linux it actually executes the separate
/bin/uname
process. On the other handsys.platform
is determinedwhen the Python interpreter is compiled, so this is a simple hard-coded
string.
Because it is a runtime check,
platform.system()
checks also cannot beanalyzed by static type checkers like Pyre and Mypy. These type
checkers do understand
sys.platform
checks, and can correctly avoidcomplaining about code paths that use platform-specific modules and
functions. e.g., they can avoid complaining about
ctypes.WinDLL
notexisting on Linux if its use is guarded by a
sys.platform
check.Test Plan:
Ran tests on Linux, and will check CI test results.
Differential Revision: D26271724