mercurial/interfaces/repository.py
changeset 52463 0cfcc276b796
parent 52462 fb3144d35361
child 52464 73a46cef57c9
--- a/mercurial/interfaces/repository.py	Tue Dec 10 17:31:17 2024 -0500
+++ b/mercurial/interfaces/repository.py	Tue Oct 22 16:45:10 2024 -0400
@@ -8,7 +8,10 @@
 
 from __future__ import annotations
 
+import typing
+
 from typing import (
+    Any,
     Protocol,
 )
 
@@ -16,6 +19,17 @@
 from .. import error
 from . import util as interfaceutil
 
+if typing.TYPE_CHECKING:
+    # Almost all mercurial modules are only imported in the type checking phase
+    # to avoid circular imports
+    from ..utils import (
+        urlutil,
+    )
+
+    # TODO: create a Protocol class, since importing uimod here causes a cycle
+    #  that confuses pytype.
+    Ui = Any
+
 # Local repository feature string.
 
 # Revlogs are being used for file storage.
@@ -112,8 +126,11 @@
     outside of this module.
     """
 
-    ui = interfaceutil.Attribute("""ui.ui instance""")
-    path = interfaceutil.Attribute("""a urlutil.path instance or None""")
+    ui: Ui
+    """ui.ui instance"""
+
+    path: urlutil.path | None
+    """a urlutil.path instance or None"""
 
     def url(self):
         """Returns a URL string representing this peer.