# ==========
# TODO: Review the following
# ==========

_socket.*
_posixsubprocess.cloexec_pipe
curses.has_key
selectors.KqueueSelector
socket.[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
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_]+
((os|posix).CLONE_[A-Z]+)?  # Python 3.12+
(posix.O_[A-Z_]+)?
(posix.ST_[A-Z]+)?
(termios.[A-Z0-9_]+)?

# 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
