Skip to content

Commit 37feafd

Browse files
committed
fix: Update imports on handle_value
1 parent 8941fde commit 37feafd

File tree

1 file changed

+10
-3
lines changed
  • pybind11_stubgen/parser/mixins

1 file changed

+10
-3
lines changed

pybind11_stubgen/parser/mixins/fix.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,11 @@ def handle_value(self, value: Any) -> Value:
144144
result = super().handle_value(value)
145145
if inspect.isroutine(value) and result.is_print_safe:
146146
self._add_import(QualifiedName.from_str(result.repr))
147+
else:
148+
type_ = type(value)
149+
self._add_import(
150+
QualifiedName.from_str(f"{type_.__module__}.{type_.__qualname__}")
151+
)
147152
return result
148153

149154
def parse_annotation_str(
@@ -159,7 +164,9 @@ def _add_import(self, name: QualifiedName) -> None:
159164
return
160165
if len(name) == 1 and len(name[0]) == 0:
161166
return
162-
if hasattr(builtins, name[0]):
167+
if len(name) == 1 and hasattr(builtins, name[0]):
168+
return
169+
if len(name) > 0 and name[0] == "builtins":
163170
return
164171
if self.__current_class is not None and hasattr(self.__current_class, name[0]):
165172
return
@@ -171,6 +178,8 @@ def _add_import(self, name: QualifiedName) -> None:
171178
if module_name is None:
172179
self.report_error(NameResolutionError(name))
173180
return
181+
if self.__current_module.__name__ == str(module_name):
182+
return
174183
self.__extra_imports.add(Import(name=None, origin=module_name))
175184

176185
def _get_parent_module(self, name: QualifiedName) -> QualifiedName | None:
@@ -913,8 +922,6 @@ def parse_annotation_str(
913922
except ValueError:
914923
pass
915924
else:
916-
# call `handle_type` to trigger implicit import
917-
self.handle_type(FixedSize)
918925
return self.handle_value(FixedSize(*dimensions))
919926
return result
920927

0 commit comments

Comments
 (0)