Switch out black for ruff format (#1698)

Saves one pre-commit hook, some pyproject.toml configuration,
and provides much better performance with almost identical behavior.

Co-authored-by: dominic <510002+dmah42@users.noreply.github.com>
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 5c4a3df..a1f0834 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -10,12 +10,9 @@
       - id: mypy
         types_or: [ python, pyi ]
         args: [ "--ignore-missing-imports", "--scripts-are-modules" ]
-  - repo: https://github.com/psf/black
-    rev: 23.10.1
-    hooks:
-      - id: black
   - repo: https://github.com/astral-sh/ruff-pre-commit
-    rev: v0.1.3
+    rev: v0.1.5
     hooks:
       - id: ruff
-        args: [ --fix, --exit-non-zero-on-fix ]
\ No newline at end of file
+        args: [ --fix, --exit-non-zero-on-fix ]
+      - id: ruff-format
\ No newline at end of file
diff --git a/pyproject.toml b/pyproject.toml
index 442cef3..5e70b31 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -56,12 +56,6 @@
 
 [tool.setuptools_scm]
 
-[tool.black]
-# Source https://github.com/psf/black#configuration-format
-include = "\\.pyi?$"
-line-length = 80
-target-version = ["py311"]
-
 [tool.mypy]
 check_untyped_defs = true
 disallow_incomplete_defs = true
@@ -78,6 +72,7 @@
 # explicitly tell ruff the source directory to correctly identify first-party package.
 src = ["bindings/python"]
 line-length = 80
+target-version = "py311"
 # Enable pycodestyle (`E`, `W`), Pyflakes (`F`), and isort (`I`) codes by default.
 select = ["E", "F", "I", "W"]
 ignore = [