Skip to content

mypy does not recognize os.name #13002

Open
@amatyukhin0

Description

@amatyukhin0

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

Activity

Avasam

Avasam commented on Feb 21, 2024

@Avasam
SponsorContributor

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

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @Avasam@amatyukhin0@AlexWaygood

        Issue actions

          mypy does not recognize os.name · Issue #13002 · python/mypy