make format actually work :)
diff --git a/pyproject.toml b/pyproject.toml
index fdbad74..b71bdb5 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -9,21 +9,21 @@
 keywords = [ "json5" ]
 license = { file = "LICENSE" }
 authors = [
-  { name = "Dirk Pranke", email = "dpranke@chromium.org" },
+    { name = "Dirk Pranke", email = "dpranke@chromium.org" },
 ]
 requires-python = ">=3.8.0"
 classifiers = [
-  "Development Status :: 5 - Production/Stable",
-  "Intended Audience :: Developers",
-  "License :: OSI Approved :: Apache Software License",
-  "Programming Language :: Python :: 3 :: Only",
-  "Programming Language :: Python :: 3.8",
-  "Programming Language :: Python :: 3.9",
-  "Programming Language :: Python :: 3.10",
-  "Programming Language :: Python :: 3.11",
-  "Programming Language :: Python :: 3.12",
-  "Programming Language :: Python :: 3.13",
-  "Programming Language :: Python :: 3.14",
+    "Development Status :: 5 - Production/Stable",
+    "Intended Audience :: Developers",
+    "License :: OSI Approved :: Apache Software License",
+    "Programming Language :: Python :: 3 :: Only",
+    "Programming Language :: Python :: 3.8",
+    "Programming Language :: Python :: 3.9",
+    "Programming Language :: Python :: 3.10",
+    "Programming Language :: Python :: 3.11",
+    "Programming Language :: Python :: 3.12",
+    "Programming Language :: Python :: 3.13",
+    "Programming Language :: Python :: 3.14",
 ]
 dynamic = [ "version" ]
 
@@ -35,26 +35,22 @@
 [dependency-groups]
 # Note that not everything is guaranteed to work on 3.8.
 dev = [
-  "build>=1.2.2.post1; python_version<'3.9'",
-  "build>=1.3; python_version>='3.9'",
-  "coverage==7.5.4; python_version<'3.9'",
-  "coverage==7.8; python_version>='3.9' and python_version<'3.10'",
-  "coverage>=7.12; python_version>='3.10'",
-  "mypy==1.14.1; python_version<'3.9'",
-  "mypy>=1.19; python_version>='3.9'",
-  "pip>=25.3; python_version>='3.9'",
-  "pylint==3.2.7; python_version<'3.9'",
-  "pylint==3.3.6; python_version>='3.9' and python_version<'3.10'",
-  "pylint>=4.0.4; python_version>='3.10'",
-  "ruff>=0.14.7",
-  "twine==6.1; python_version<'3.10'",
-  "twine>=6.2; python_version>='3.10'",
+    "build>=1.2.2.post1; python_version<'3.9'",
+    "build>=1.3; python_version>='3.9'",
+    "coverage==7.5.4; python_version<'3.9'",
+    "coverage==7.8; python_version>='3.9' and python_version<'3.10'",
+    "coverage>=7.12; python_version>='3.10'",
+    "mypy==1.14.1; python_version<'3.9'",
+    "mypy>=1.19; python_version>='3.9'",
+    "pip>=25.3; python_version>='3.9'",
+    "pylint==3.2.7; python_version<'3.9'",
+    "pylint==3.3.6; python_version>='3.9' and python_version<'3.10'",
+    "pylint>=4.0.4; python_version>='3.10'",
+    "ruff>=0.14.7",
+    "twine==6.1; python_version<'3.10'",
+    "twine>=6.2; python_version>='3.10'",
 ]
 
-[tool.pyproject-fmt]
-indent = 4
-keep_full_version = true
-
 [tool.setuptools]
 packages = [ "json5" ]
 
@@ -99,24 +95,29 @@
 
 [tool.pylint."message control"]
 disable = [
-  "broad-except",
-  "fixme",
-  "global-statement",
-  "locally-disabled",
-  "missing-docstring",
-  "too-many-arguments",
-  "too-few-public-methods",
-  "too-many-branches",
-  "too-many-instance-attributes",
-  "too-many-lines",
-  "too-many-locals",
-  "too-many-positional-arguments",
-  "too-many-public-methods",
-  "too-many-return-statements",
-  "too-many-statements",
-  "unidiomatic-typecheck",
+    "broad-except",
+    "fixme",
+    "global-statement",
+    "locally-disabled",
+    "missing-docstring",
+    "too-many-arguments",
+    "too-few-public-methods",
+    "too-many-branches",
+    "too-many-instance-attributes",
+    "too-many-lines",
+    "too-many-locals",
+    "too-many-positional-arguments",
+    "too-many-public-methods",
+    "too-many-return-statements",
+    "too-many-statements",
+    "unidiomatic-typecheck",
 ]
 
 [tool.pylint.reports]
 reports = "no"
 score = "no"
+
+[tool.pyproject-fmt]
+indent = 4
+keep_full_version = true
+max_supported_python = "3.14"
diff --git a/run b/run
index 2714aff..a62f495 100755
--- a/run
+++ b/run
@@ -292,7 +292,7 @@
         proc = self.call(cmd, exit_on_error=False, capture_output=True)
         if self.args.check and proc.returncode:
             print('pyproject.toml needs formatting')
-        elif proc.returncode:
+        elif proc.returncode and not proc.stdout:
             sys.exit(proc.returncode)
         if not self.args.check and not self.args.no_execute:
             with open('pyproject.toml') as fp: