From ed516f4fea12c7c8fe66bfc794d0be75c33a281c Mon Sep 17 00:00:00 2001
From: Talley Lambert <talley.lambert@gmail.com>
Date: Mon, 18 Mar 2024 11:11:56 -0400
Subject: [PATCH] chore: add format to pre-commit (#182)

---
 .pre-commit-config.yaml                    |  1 +
 src/app_model/_app.py                      |  9 ++----
 src/app_model/backends/qt/__init__.py      |  1 +
 src/app_model/expressions/__init__.py      |  1 +
 src/app_model/expressions/_context_keys.py |  6 ++--
 src/app_model/expressions/_expressions.py  | 22 +++++++--------
 src/app_model/registries/__init__.py       |  1 +
 src/app_model/registries/_register.py      | 32 +++++++++++-----------
 src/app_model/types/__init__.py            |  1 +
 src/app_model/types/_keys/_key_codes.py    |  9 ++----
 src/app_model/types/_utils.py              |  2 +-
 tests/test_context/test_context.py         |  3 +-
 12 files changed, 43 insertions(+), 45 deletions(-)

diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index f5642a6..46de3ff 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -14,6 +14,7 @@ repos:
     hooks:
       - id: ruff
         args: ["--fix", "--unsafe-fixes"]
+      - id: ruff-format
 
   - repo: https://github.com/abravalheri/validate-pyproject
     rev: v0.16
diff --git a/src/app_model/_app.py b/src/app_model/_app.py
index 8219ac0..3d342f5 100644
--- a/src/app_model/_app.py
+++ b/src/app_model/_app.py
@@ -210,8 +210,7 @@ def dispose(self) -> None:
                 self._disposers.pop()[1]()
 
     @overload
-    def register_action(self, action: Action) -> DisposeCallable:
-        ...
+    def register_action(self, action: Action) -> DisposeCallable: ...
 
     @overload
     def register_action(
@@ -227,8 +226,7 @@ def register_action(
         menus: list[MenuRuleOrDict] | None = ...,
         keybindings: list[KeyBindingRuleOrDict] | None = ...,
         palette: bool = True,
-    ) -> CommandDecorator:
-        ...
+    ) -> CommandDecorator: ...
 
     @overload
     def register_action(
@@ -244,8 +242,7 @@ def register_action(
         menus: list[MenuRuleOrDict] | None = ...,
         keybindings: list[KeyBindingRuleOrDict] | None = ...,
         palette: bool = True,
-    ) -> DisposeCallable:
-        ...
+    ) -> DisposeCallable: ...
 
     def register_action(
         self,
diff --git a/src/app_model/backends/qt/__init__.py b/src/app_model/backends/qt/__init__.py
index 5504870..e81c564 100644
--- a/src/app_model/backends/qt/__init__.py
+++ b/src/app_model/backends/qt/__init__.py
@@ -1,4 +1,5 @@
 """Qt objects for app_model."""
+
 from ._qaction import QCommandAction, QCommandRuleAction, QMenuItemAction
 from ._qkeybindingedit import QModelKeyBindingEdit
 from ._qkeymap import (
diff --git a/src/app_model/expressions/__init__.py b/src/app_model/expressions/__init__.py
index b6067d8..aa4544b 100644
--- a/src/app_model/expressions/__init__.py
+++ b/src/app_model/expressions/__init__.py
@@ -1,4 +1,5 @@
 """Abstraction on expressions, and contexts in which to evaluate them."""
+
 from ._context import Context, app_model_context, create_context, get_context
 from ._context_keys import ContextKey, ContextKeyInfo, ContextNamespace
 from ._expressions import (
diff --git a/src/app_model/expressions/_context_keys.py b/src/app_model/expressions/_context_keys.py
index d202dc2..83e9eb2 100644
--- a/src/app_model/expressions/_context_keys.py
+++ b/src/app_model/expressions/_context_keys.py
@@ -73,14 +73,14 @@ class ContextKey(Name, Generic[A, T]):
     Examples
     --------
     >>> class MyNames(ContextNamespace):
-    ...     some_key = ContextKey(0, 'some description', lambda x: sum(x))
+    ...     some_key = ContextKey(0, "some description", lambda x: sum(x))
 
     >>> expr = MyNames.some_key > 5  # create an expression using this key
 
     these expressions can be later evaluated with some concrete context.
 
-    >>> expr.eval({'some_key': 3})  # False
-    >>> expr.eval({'some_key': 6})  # True
+    >>> expr.eval({"some_key": 3})  # False
+    >>> expr.eval({"some_key": 6})  # True
     """
 
     # This will catalog all ContextKeys that get instantiated, which provides
diff --git a/src/app_model/expressions/_expressions.py b/src/app_model/expressions/_expressions.py
index 0c9dd83..fdb8d7d 100644
--- a/src/app_model/expressions/_expressions.py
+++ b/src/app_model/expressions/_expressions.py
@@ -1,4 +1,5 @@
 """Provides `Expr` and its subclasses."""
+
 from __future__ import annotations
 
 import ast
@@ -128,10 +129,10 @@ class Expr(ast.AST, Generic[T]):
 
     Examples
     --------
-    >>> expr = parse_expression('myvar > 5')
+    >>> expr = parse_expression("myvar > 5")
 
     combine expressions with operators
-    >>> new_expr = expr & parse_expression('v2')
+    >>> new_expr = expr & parse_expression("v2")
 
     nice `repr`
     >>> new_expr
@@ -147,7 +148,7 @@ class Expr(ast.AST, Generic[T]):
             Name(id='v2', ctx=Load())])
 
     evaluate in some context
-    >>> new_expr.eval(dict(v2='hello!', myvar=8))
+    >>> new_expr.eval(dict(v2="hello!", myvar=8))
     'hello!'
 
     serialize
@@ -158,13 +159,13 @@ class Expr(ast.AST, Generic[T]):
     that can be evaluated repeatedly as some underlying context changes.
 
     ```python
-    light_is_green = Name[bool]('light_is_green')
-    count = Name[int]('count')
+    light_is_green = Name[bool]("light_is_green")
+    count = Name[int]("count")
     is_ready = light_is_green & count > 5
 
-    assert is_ready.eval({'count': 4, 'light_is_green': True}) == False
-    assert is_ready.eval({'count': 7, 'light_is_green': False}) == False
-    assert is_ready.eval({'count': 7, 'light_is_green': True}) == True
+    assert is_ready.eval({"count": 4, "light_is_green": True}) == False
+    assert is_ready.eval({"count": 7, "light_is_green": False}) == False
+    assert is_ready.eval({"count": 7, "light_is_green": True}) == True
     ```
 
     this will also preserve type information:
@@ -466,7 +467,7 @@ class ExprTransformer(ast.NodeTransformer):
 
     Examples
     --------
-    >>> tree = ast.parse('my_var > 11', mode='eval')
+    >>> tree = ast.parse("my_var > 11", mode="eval")
     >>> tree = ExprTransformer().visit(tree)  # transformed
     """
 
@@ -480,7 +481,6 @@ def visit(self, node: ast.expr) -> Expr: ...
     @overload
     def visit(self, node: PassedType) -> PassedType: ...
     # fmt: on
-
     def visit(self, node: ast.AST) -> ast.AST | None:
         """Visit a node in the tree, transforming into Expr."""
         if isinstance(
@@ -523,7 +523,7 @@ class _ExprSerializer(ast.NodeVisitor):
 
     Examples
     --------
-    >>> expr = Expr.parse('a + b == c')
+    >>> expr = Expr.parse("a + b == c")
     >>> print(expr)
     'a + b == c'
 
diff --git a/src/app_model/registries/__init__.py b/src/app_model/registries/__init__.py
index 1a0755f..2a10441 100644
--- a/src/app_model/registries/__init__.py
+++ b/src/app_model/registries/__init__.py
@@ -1,4 +1,5 @@
 """App-model registries, such as menus, keybindings, commands."""
+
 from ._commands_reg import CommandsRegistry
 from ._keybindings_reg import KeyBindingsRegistry
 from ._menus_reg import MenusRegistry
diff --git a/src/app_model/registries/_register.py b/src/app_model/registries/_register.py
index c5584de..246e226 100644
--- a/src/app_model/registries/_register.py
+++ b/src/app_model/registries/_register.py
@@ -21,8 +21,9 @@
 
 
 @overload
-def register_action(app: Application | str, id_or_action: Action) -> DisposeCallable:
-    ...
+def register_action(
+    app: Application | str, id_or_action: Action
+) -> DisposeCallable: ...
 
 
 @overload
@@ -39,8 +40,7 @@ def register_action(
     menus: list[MenuRuleOrDict] | None = ...,
     keybindings: list[KeyBindingRuleOrDict] | None = ...,
     palette: bool = True,
-) -> CommandDecorator:
-    ...
+) -> CommandDecorator: ...
 
 
 @overload
@@ -57,8 +57,7 @@ def register_action(
     menus: list[MenuRuleOrDict] | None = ...,
     keybindings: list[KeyBindingRuleOrDict] | None = ...,
     palette: bool = True,
-) -> DisposeCallable:
-    ...
+) -> DisposeCallable: ...
 
 
 def register_action(
@@ -159,10 +158,10 @@ def register_action(
     from app_model import Application, Action, register_action
 
     app = Application.get_or_create("myapp")
-    action = Action('my_action', title='My Action', callback=lambda: print("hi"))
+    action = Action("my_action", title="My Action", callback=lambda: print("hi"))
     register_action(app, action)
 
-    app.commands.execute_command('my_action')  # prints "hi"
+    app.commands.execute_command("my_action")  # prints "hi"
     ```
 
     ## Creating a new Action
@@ -175,12 +174,12 @@ def register_action(
     ```python
     register_action(
         app,
-        'my_action2',
-        title='My Action2',
+        "my_action2",
+        title="My Action2",
         callback=lambda: print("hello again!"),
     )
 
-    app.commands.execute_command('my_action2')  # prints "hello again!"
+    app.commands.execute_command("my_action2")  # prints "hello again!"
     ```
 
     ## Usage as a decorator
@@ -189,11 +188,12 @@ def register_action(
     decorate a function as the executor of the command:
 
     ```python
-    @register_action(app, 'my_action3', title='My Action3')
+    @register_action(app, "my_action3", title="My Action3")
     def my_action3():
         print("hello again, again!")
 
-    app.commands.execute_command('my_action3')  # prints "hello again, again!"
+
+    app.commands.execute_command("my_action3")  # prints "hello again, again!"
     ```
 
     ## Passing app as a string
@@ -206,9 +206,9 @@ def my_action3():
 
     ```python
     register_action(
-        'myapp',  # app name instead of Application instance
-        'my_action4',
-        title='My Action4',
+        "myapp",  # app name instead of Application instance
+        "my_action4",
+        title="My Action4",
         callback=lambda: print("hello again, again, again!"),
     )
     ```
diff --git a/src/app_model/types/__init__.py b/src/app_model/types/__init__.py
index 1502e92..52e6609 100644
--- a/src/app_model/types/__init__.py
+++ b/src/app_model/types/__init__.py
@@ -1,4 +1,5 @@
 """App-model types."""
+
 from typing import TYPE_CHECKING
 
 from ._action import Action
diff --git a/src/app_model/types/_keys/_key_codes.py b/src/app_model/types/_keys/_key_codes.py
index 1b5cbab..4c719d4 100644
--- a/src/app_model/types/_keys/_key_codes.py
+++ b/src/app_model/types/_keys/_key_codes.py
@@ -655,16 +655,13 @@ class KeyMod(IntFlag):
     WinCtrl = 1 << 8  # meta key on windows, ctrl key on mac
 
     @overload  # type: ignore
-    def __or__(self, other: "KeyMod") -> "KeyMod":
-        ...
+    def __or__(self, other: "KeyMod") -> "KeyMod": ...
 
     @overload
-    def __or__(self, other: KeyCode) -> "KeyCombo":
-        ...
+    def __or__(self, other: KeyCode) -> "KeyCombo": ...
 
     @overload
-    def __or__(self, other: int) -> int:
-        ...
+    def __or__(self, other: int) -> int: ...
 
     def __or__(
         self, other: Union["KeyMod", KeyCode, int]
diff --git a/src/app_model/types/_utils.py b/src/app_model/types/_utils.py
index 459d5ac..f8ebff5 100644
--- a/src/app_model/types/_utils.py
+++ b/src/app_model/types/_utils.py
@@ -33,7 +33,7 @@ def import_python_name(python_name: str) -> Any:
     --------
     >>> import_python_name("my_package.a_module:some_function")
     <function some_function at 0x...>
-    >>> import_python_name('pydantic:BaseModel')
+    >>> import_python_name("pydantic:BaseModel")
     <class 'pydantic.main.BaseModel'>
     """
     _validate_python_name(python_name)  # shows the best error message
diff --git a/tests/test_context/test_context.py b/tests/test_context/test_context.py
index ca4ed47..2a40fe3 100644
--- a/tests/test_context/test_context.py
+++ b/tests/test_context/test_context.py
@@ -10,8 +10,7 @@
 def test_create_context():
     """You can create a context for any object"""
 
-    class T:
-        ...
+    class T: ...
 
     t = T()
     tid = id(t)