ruff/docs/rules/unrecognized-platform-check.md
Nyakku Shigure fc465cc2af
[flake8-pyi]: add rules for unrecognized platform check (PYI007, PYI008) (#2805)
Add two [flake8-pyi](https://github.com/PyCQA/flake8-pyi) rules (Y007, Y008). ref: #848

The specifications are described in [PEP 484 - Version and platform checking](https://peps.python.org/pep-0484/#version-and-platform-checking)

The original implementation in flake8-pyi is shown below.

- Implemention: 66f28a4407/pyi.py (L1429-L1443)
- Tests: 66f28a4407/tests/sysplatform.pyi
2023-02-12 18:02:38 +00:00

880 B

unrecognized-platform-check (PYI007)

Derived from the flake8-pyi linter.

What it does

Check for unrecognized sys.platform checks. Platform checks should be simple string comparisons.

Note: this rule is only enabled in .pyi stub files.

Why is this bad?

Some sys.platform checks are too complex for type checkers to understand, and thus result in false positives. sys.platform checks should be simple string comparisons, like sys.platform == "linux".

Example

if sys.platform.startswith("linux"):
   # Linux specific definitions
else:
  # Posix specific definitions

Instead, use a simple string comparison, such as == or !=:

if sys.platform == "linux":
    # Linux specific definitions
else:
    # Posix specific definitions

References