1from __future__ import annotations
2
3import sys
4
5PLATFORM_WINDOWS = "windows"
6PLATFORM_LINUX = "linux"
7PLATFORM_BSD = "bsd"
8PLATFORM_DARWIN = "darwin"
9PLATFORM_UNKNOWN = "unknown"
10
11
12def get_platform_name() -> str:
13    if sys.platform.startswith("win"):
14        return PLATFORM_WINDOWS
15
16    if sys.platform.startswith("darwin"):
17        return PLATFORM_DARWIN
18
19    if sys.platform.startswith("linux"):
20        return PLATFORM_LINUX
21
22    if sys.platform.startswith(("dragonfly", "freebsd", "netbsd", "openbsd", "bsd")):
23        return PLATFORM_BSD
24
25    return PLATFORM_UNKNOWN
26
27
28__platform__ = get_platform_name()
29
30
31def is_linux() -> bool:
32    return __platform__ == PLATFORM_LINUX
33
34
35def is_bsd() -> bool:
36    return __platform__ == PLATFORM_BSD
37
38
39def is_darwin() -> bool:
40    return __platform__ == PLATFORM_DARWIN
41
42
43def is_windows() -> bool:
44    return __platform__ == PLATFORM_WINDOWS
45