[clang] [clang][Python] Apply type annotations to Python (PR #173845)

Jannick Kremer via cfe-commits cfe-commits at lists.llvm.org
Mon Jan 12 05:02:57 PST 2026


================
@@ -311,36 +320,36 @@ def from_offset(tu, file, offset):
         return conf.lib.clang_getLocationForOffset(tu, file, offset)  # type: ignore [no-any-return]
 
     @property
-    def file(self):
+    def file(self) -> File | None:
         """Get the file represented by this source location."""
         return self._get_instantiation()[0]
 
     @property
-    def line(self):
+    def line(self) -> int:
         """Get the line represented by this source location."""
         return self._get_instantiation()[1]
 
     @property
-    def column(self):
+    def column(self) -> int:
         """Get the column represented by this source location."""
         return self._get_instantiation()[2]
 
     @property
-    def offset(self):
+    def offset(self) -> int:
         """Get the file offset represented by this source location."""
         return self._get_instantiation()[3]
 
     @property
-    def is_in_system_header(self):
+    def is_in_system_header(self) -> bool:
         """Returns true if the given source location is in a system header."""
         return bool(conf.lib.clang_Location_isInSystemHeader(self))
 
-    def __eq__(self, other):
+    def __eq__(self, other: object) -> bool:
----------------
DeinAlptraum wrote:

As I also actually just learned the other day, the suggested behavior here is to throw `NotImplemented`, see here: https://docs.python.org/3/library/constants.html#NotImplemented

If you do `operator(a, b)` when `type(a) != type(b)`, then if `a` returns `NotImplemented`, it is then attempted to call the `__eq__` implementation of whatever type `b` is of, and when that does not allow comparison (also returning `NotImplemented`) an exception is raised

https://github.com/llvm/llvm-project/pull/173845


More information about the cfe-commits mailing list