_socket.*
_posixsubprocess.cloexec_pipe
curses.has_key
os.plock
selectors.KqueueSelector
socket.[A-Z0-9_]+

# Exists at runtime, but missing from stubs
spwd.struct_spwd.sp_nam
spwd.struct_spwd.sp_pwd

# Platform differences that cannot be captured by the type system
(posix.O_[A-Z_]+)?
(posix.ST_[A-Z]+)?
(termios.[A-Z0-9_]+)?

_ctypes.dlclose
_ctypes.dlopen
_ctypes.dlsym

# ==========
# Allowlist entries that cannot or should not be fixed
# ==========

# Modules that do not exist on Linux systems
_msi
_winapi
asyncio.windows_events
asyncio.windows_utils
msilib(.[a-z]+)?
msvcrt
nt
winreg
winsound

# multiprocessing.popen_spawn_win32 exists on Linux but fail to import
multiprocessing.popen_spawn_win32

# Platform differences that cannot be captured by the type system
fcntl.I_[A-Z0-9_]+
os.SCHED_[A-Z_]+
posix.SCHED_[A-Z_]+

# Exists on some Unix platforms, but not in CI:
os.EX_NOTFOUND
posix.EX_NOTFOUND

# Some of these exist on non-windows, but they are useless and this is not intended
stat.FILE_ATTRIBUTE_[A-Z_]+

# Methods that come from __getattr__() at runtime
tkinter.Tk.createfilehandler
tkinter.Tk.deletefilehandler

_?curses.ACS_.* # ACS codes are initialized only after initscr call
curses.COLORS  # Initialized after start_color
curses.COLOR_PAIRS  # Initialized after start_color
curses.COLS  # Initialized only after initscr call
curses.LINES  # Initialized only after initscr call

# Takes a "_warn" parameter at runtime
# for technical reasons; no need to expose it in the stub.
asyncio.ThreadedChildWatcher.__del__
asyncio.unix_events.ThreadedChildWatcher.__del__
