Enable more ruff checks. NFC
diff --git a/emsdk.py b/emsdk.py
index 22e461a..dffe1bd 100644
--- a/emsdk.py
+++ b/emsdk.py
@@ -109,7 +109,7 @@
       # https://stackoverflow.com/questions/37460073/msys-vs-mingw-internal-environment-variables
       errlog('Warning: MSYSTEM environment variable is present, and is set to "' + os.getenv('MSYSTEM') + '". This shell has not been tested with emsdk and may not work.')
 
-  if platform.mac_ver()[0] != '':
+  if platform.mac_ver()[0]:
     MACOS = True
 
   if not MACOS and (platform.system() == 'Linux'):
@@ -294,7 +294,7 @@
     CMAKE_GENERATOR = ''
 
 
-sys.argv = [a for a in sys.argv if a not in ('--mingw', '--vs2019', '--vs2022')]
+sys.argv = [a for a in sys.argv if a not in {'--mingw', '--vs2019', '--vs2022'}]
 
 
 # Computes a suitable path prefix to use when building with a given generator.
@@ -626,7 +626,7 @@
   suffix = path[last_dot:]
   # Very simple logic for the only file suffixes used by emsdk downloader. Other
   # suffixes, like 'clang-3.2' are treated as dirs.
-  if suffix in ('.exe', '.zip', '.txt'):
+  if suffix in {'.exe', '.zip', '.txt'}:
     return False
   else:
     return True
@@ -1145,7 +1145,7 @@
 
   enable_assertions = ENABLE_LLVM_ASSERTIONS.lower() == 'on' or (ENABLE_LLVM_ASSERTIONS == 'auto' and build_type.lower() != 'release' and build_type.lower() != 'minsizerel')
 
-  if ARCH in ('x86', 'x86_64'):
+  if ARCH in {'x86', 'x86_64'}:
     targets_to_build = 'WebAssembly;X86'
   elif ARCH == 'arm':
     targets_to_build = 'WebAssembly;ARM'
@@ -1314,7 +1314,7 @@
     firefox_version = os.path.basename(scraper.filename).split("firefox-")[1].split(".en-US")[0]
 
   print('Target Firefox version: ' + firefox_version)
-  if tool.version in ['latest', 'latest-esr', 'latest-beta', 'nightly']:
+  if tool.version in {'latest', 'latest-esr', 'latest-beta', 'nightly'}:
     pretend_version_dir = os.path.normpath(tool.installation_path())
     orig_version = tool.version
     tool.version = firefox_version
@@ -1645,7 +1645,7 @@
   for line in lines:
     try:
       key, value = parse_key_value(line)
-      if value != '':
+      if value:
         EM_CONFIG_DICT[key] = value
     except Exception:
       pass
@@ -1701,7 +1701,7 @@
       return []
 
   try:
-    return max(versions, key=lambda v: parse(v))
+    return max(versions, key=parse)
   except Exception:
     return None
 
@@ -1729,9 +1729,9 @@
     os_ = 'darwin'
   else:
     os_ = ''
-  if platform.machine().lower() in ["x86_64", "amd64"]:
+  if platform.machine().lower() in {'x86_64', 'amd64'}:
     arch = 'x64'
-  elif platform.machine().lower() in ["arm64", "aarch64"]:
+  elif platform.machine().lower() in {'arm64', 'aarch64'}:
     arch = 'arm64'
   if WINDOWS:
     zip_suffix = 'zip'
@@ -1946,7 +1946,7 @@
       else:
         return False
     else:
-      if not hasattr(self, 'macos_url') and not hasattr(self, 'windows_url') and not hasattr(self, 'unix_url') and not hasattr(self, 'linux_url'):
+      if not any(hasattr(self, a) for a in ('macos_url', 'windows_url', 'unix_url', 'linux_url')):
         return True
 
     if MACOS and hasattr(self, 'macos_url') and self.compatible_with_this_arch():
@@ -2170,7 +2170,7 @@
     if hasattr(self, 'custom_install_script'):
       if self.custom_install_script == 'emscripten_npm_install':
         success = emscripten_npm_install(self, self.installation_path())
-      elif self.custom_install_script in ('build_llvm', 'build_ninja', 'build_ccache', 'download_node_nightly', 'download_firefox'):
+      elif self.custom_install_script in {'build_llvm', 'build_ninja', 'build_ccache', 'download_node_nightly', 'download_firefox'}:
         # 'build_llvm' is a special one that does the download on its
         # own, others do the download manually.
         pass
@@ -2867,7 +2867,7 @@
                  'EMSDK_NUM_CORES', 'EMSDK_NOTTY', 'EMSDK_KEEP_DOWNLOADS'}
   env_keys_to_add = {pair[0] for pair in env_vars_to_add}
   for key in os.environ:
-    if key.startswith('EMSDK_') or key in ('EM_CACHE', 'EM_CONFIG'):
+    if key.startswith('EMSDK_') or key in {'EM_CACHE', 'EM_CONFIG'}:
       if key not in env_keys_to_add and key not in ignore_keys:
         info('Clearing existing environment variable: %s' % key)
         env_string += unset_env(key)
@@ -2888,7 +2888,7 @@
     name = name.replace('upstream-master', 'main')
   if 'fastcomp' in name:
     exit_with_error('the fastcomp backend is no longer supported.  Please use an older version of emsdk (for example 3.1.29) if you want to install the old fastcomp-based SDK')
-  if name in ('tot', 'sdk-tot', 'tot-upstream'):
+  if name in {'tot', 'sdk-tot', 'tot-upstream'}:
     if activating:
       # When we are activating a tot release, assume that the currently
       # installed SDK, if any, is the tot release we want to activate.
@@ -2937,7 +2937,7 @@
   debug_print('emsdk.py running under `%s`' % sys.executable)
   cmd = args.pop(0)
 
-  if cmd in ('help', '--help', '-h'):
+  if cmd in {'help', '--help', '-h'}:
     print(' emsdk: Available commands:')
 
     print('''
@@ -3099,7 +3099,7 @@
     TTY_OUTPUT = False
 
   # Replace meta-packages with the real package names.
-  if cmd in ('update', 'install', 'activate'):
+  if cmd in {'update', 'install', 'activate'}:
     activating = cmd == 'activate'
     args = [expand_sdk_name(a, activating=activating) for a in args]
 
@@ -3156,7 +3156,7 @@
       sdk = find_sdk(name)
       return 'INSTALLED' if sdk and sdk.is_installed() else ''
 
-    if (LINUX or MACOS or WINDOWS) and ARCH in ('x86', 'x86_64'):
+    if (LINUX or MACOS or WINDOWS) and ARCH in {'x86', 'x86_64'}:
       print('The *recommended* precompiled SDK download is %s (%s).' % (find_latest_version(), find_latest_hash()))
       print()
       print('To install/activate it use:')
@@ -3284,7 +3284,7 @@
   elif cmd == 'update-tags':
     errlog('`update-tags` is not longer needed.  To install the latest tot release just run `install tot`')
     return 0
-  elif cmd in ('activate', 'deactivate'):
+  elif cmd in {'activate', 'deactivate'}:
     if arg_permanent:
       print('Registering active Emscripten environment permanently')
       print('')
diff --git a/pyproject.toml b/pyproject.toml
index 3dbeb8b..383d526 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -2,17 +2,10 @@
 requires-python = ">=3.2"
 
 [tool.ruff]
+preview = true
 line-length = 100
+indent-width = 2
 exclude = [
-  "./cache/",
-  "./node_modules/",
-  "./site/source/_themes/",
-  "./site/source/conf.py",
-  "./system/lib/",
-  "./test/third_party/",
-  "./third_party/",
-  "./tools/filelock.py",
-  "./tools/scons/",
   ".git",
 ]
 
@@ -42,15 +35,23 @@
   "E501",
   "E721",
   "E741",
+  "E111", # Does not seem to honor `indent-width = 2` above
+  "E114", # Does not seem to honor `indent-width = 2` above
   "PERF203",
   "PERF401",
   "PLC0415",
+  "PLR0904",
   "PLR0915",
+  "PLR0916",
+  "PLR1702",
   "PLR1704",
   "PLR5501",
+  "PLR6301",
   "PLW0602",
   "PLW0603",
+  "PLR0914",
   "PLW1510",
+  "PLW1514",
   "PLW2901",
   "UP030", # TODO
   "UP031", # TODO