Skip to content
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

mypy does not recognize os.name #13002

Open
amatyukhin0 opened this issue Jun 21, 2022 · 1 comment
Open

mypy does not recognize os.name #13002

amatyukhin0 opened this issue Jun 21, 2022 · 1 comment

Comments

@amatyukhin0
Copy link

Bug Report

mypy respects platform conditions using sys.platform variable, but do not recognize os.name.

Related issue: #8166

To Reproduce

Consider this piece of code, assuming we are on Linux:

import os
import signal

if os.name == 'nt':
    signal_type = signal.SIGBREAK
else:
    signal_type = signal.SIGTERM

Expected Behavior

mypy should not raise any error.

Actual Behavior

mypy fails with:

main.py:5: error: Module has no attribute "SIGBREAK"
Found 1 error in 1 file (checked 1 source file)

Note that replacing os.name == 'nt' with sys.platform == 'win32' fixes this issue.

Environment

  • Mypy version used: 0.961
  • Python version used: 3.10
  • Operating system: Linux
@amatyukhin0 amatyukhin0 added the bug mypy got something wrong label Jun 21, 2022
@AlexWaygood AlexWaygood added feature priority-2-low and removed bug mypy got something wrong labels Jun 21, 2022
QuLogic added a commit to QuLogic/matplotlib that referenced this issue Aug 18, 2023
mypy does not recognize the latter [1], and there is a typing failure on
Windows because of `os.geteuid`.

[1] python/mypy#13002
QuLogic added a commit to QuLogic/matplotlib that referenced this issue Aug 22, 2023
mypy does not recognize the latter [1], and there is a typing failure on
Windows because of `os.geteuid`.

[1] python/mypy#13002
@Avasam
Copy link
Contributor

Avasam commented Feb 21, 2024

Similar to #8166 (comment)
This is understood by the Pylance language server (and I assume pyright, although I haven't properly tested)

setuptools for example, has this snippet of code, which causes error: Cannot find implementation or library stub for module named "dl" [import-not-found] on Windows:

have_rtld = False
use_stubs = False

if sys.platform == "darwin":
    use_stubs = True
elif os.name != 'nt':
    try:
        import dl # type: ignore[import-not-found] # https://github.com/python/mypy/issues/13002

        use_stubs = have_rtld = hasattr(dl, 'RTLD_NOW')
    except ImportError:
        pass

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants