BLACKLIST = {
    # === Builtins ===
    'builtins.open',
    'builtins.print',
    'builtins.input',
    'builtins.exec',
    'builtins.eval',  # Can have side effects
    'builtins.compile',  # Can have side effects
    'builtins.__import__',
    # === os module - File/Dir operations ===
    'os.remove',
    'os.unlink',
    'os.rmdir',
    'os.mkdir',
    'os.makedirs',
    'os.rename',
    'os.replace',
    'os.link',
    'os.symlink',
    'os.chmod',
    'os.chown',
    'os.utime',
    'os.truncate',
    'os.ftruncate',
    'os.removedirs',
    'os.renames',
    # === os module - Process/System ===
    'os.system',
    'os.popen',
    'os.spawnl',
    'os.spawnle',
    'os.spawnlp',
    'os.spawnlpe',
    'os.spawnv',
    'os.spawnve',
    'os.spawnvp',
    'os.spawnvpe',
    'os.execl',
    'os.execle',
    'os.execlp',
    'os.execlpe',
    'os.execv',
    'os.execve',
    'os.execvp',
    'os.execvpe',
    'os.fork',
    'os.kill',
    'os.abort',
    'os.chdir',
    'os.fchdir',
    'os.putenv',
    'os.unsetenv',
    'os.setuid',
    'os.setgid',
    'os.setpgrp',
    # === os module - I/O ===
    'os.open',
    'os.read',
    'os.write',
    'os.close',
    'os.pipe',
    'os.dup',
    'os.dup2',
    # === sys module ===
    'sys.exit',
    'sys.stdout.write',
    'sys.stderr.write',
    'sys.stdin.read',
    'sys.stdin.readline',
    'sys.setrecursionlimit',
    'sys.settrace',
    'sys.setprofile',
    # === subprocess ===
    'subprocess.run',
    'subprocess.call',
    'subprocess.check_call',
    'subprocess.check_output',
    'subprocess.Popen',
    'subprocess.getstatusoutput',
    'subprocess.getoutput',
    # === shutil ===
    'shutil.rmtree',
    'shutil.copy',
    'shutil.copy2',
    'shutil.copyfile',
    'shutil.copytree',
    'shutil.move',
    'shutil.chown',
    'shutil.disk_usage',
    'shutil.make_archive',
    'shutil.unpack_archive',
    # === time ===
    'time.sleep',
    # === random (state modification) ===
    'random.seed',
    'random.setstate',
    # === socket ===
    'socket.socket',
    'socket.create_connection',
    'socket.create_server',
    'socket.fromfd',
    'socket.socketpair',
    # === pathlib (write operations) ===
    'pathlib.Path.write_text',
    'pathlib.Path.write_bytes',
    'pathlib.Path.touch',
    'pathlib.Path.mkdir',
    'pathlib.Path.unlink',
    'pathlib.Path.rmdir',
    'pathlib.Path.rename',
    'pathlib.Path.replace',
    'pathlib.Path.chmod',
    'pathlib.Path.lchmod',
    'pathlib.Path.symlink_to',
    'pathlib.Path.hardlink_to',
    # === tempfile ===
    'tempfile.TemporaryFile',
    'tempfile.NamedTemporaryFile',
    'tempfile.TemporaryDirectory',
    'tempfile.mkstemp',
    'tempfile.mkdtemp',
    # === logging ===
    'logging.debug',
    'logging.info',
    'logging.warning',
    'logging.error',
    'logging.critical',
    'logging.log',
    'logging.exception',
    'logging.basicConfig',
    # === pickle (can execute arbitrary code) ===
    'pickle.dump',
    'pickle.dumps',
    'pickle.load',
    'pickle.loads',
    # === shelve (persistent storage) ===
    'shelve.open',
    # === dbm (database) ===
    'dbm.open',
    'dbm.ndbm.open',
    'dbm.gnu.open',
    # === sqlite3 ===
    'sqlite3.connect',
    # === threading ===
    'threading.Thread',
    'threading.Lock',
    'threading.RLock',
    'threading.Semaphore',
    'threading.Event',
    'threading.Timer',
    # === multiprocessing ===
    'multiprocessing.Process',
    'multiprocessing.Pool',
    'multiprocessing.Queue',
    'multiprocessing.Pipe',
    # === signal ===
    'signal.signal',
    'signal.alarm',
    'signal.pause',
    # === atexit ===
    'atexit.register',
    'atexit.unregister',
    # === webbrowser ===
    'webbrowser.open',
    'webbrowser.open_new',
    'webbrowser.open_new_tab',
    # === email.message (mutation) ===
    'email.message.Message.attach',
    'email.message.Message.add_header',
    'email.message.Message.replace_header',
    'email.message.Message.set_payload',
    # === http.client ===
    'http.client.HTTPConnection',
    'http.client.HTTPSConnection',
    # === urllib ===
    'urllib.request.urlopen',
    'urllib.request.urlretrieve',
    'urllib.request.install_opener',
    # === ftplib ===
    'ftplib.FTP',
    'ftplib.FTP_TLS',
    # === smtplib ===
    'smtplib.SMTP',
    'smtplib.SMTP_SSL',
    'smtplib.LMTP',
    # === poplib ===
    'poplib.POP3',
    'poplib.POP3_SSL',
    # === imaplib ===
    'imaplib.IMAP4',
    'imaplib.IMAP4_SSL',
    # === telnetlib ===
    'telnetlib.Telnet',
    # === gc (garbage collection) ===
    'gc.collect',
    'gc.set_threshold',
    'gc.set_debug',
    'gc.enable',
    'gc.disable',
    # === warnings ===
    'warnings.warn',
    'warnings.warn_explicit',
    'warnings.simplefilter',
    'warnings.filterwarnings',
    # === contextlib (some context managers have side effects) ===
    'contextlib.redirect_stdout',
    'contextlib.redirect_stderr',
    'contextlib.suppress',
}
