Skip to content

Commit 5a28ea7

Browse files
committed
minor style and performance modification
1 parent ec773b2 commit 5a28ea7

File tree

1 file changed

+34
-34
lines changed

1 file changed

+34
-34
lines changed

mypy/semanal.py

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -6407,46 +6407,46 @@ def lookup_fully_qualified_or_none(self, fullname: str) -> SymbolTableNode | Non
64076407
# TODO: unify/clean-up/simplify lookup methods, see #4157.
64086408
# TODO: support nested classes (but consider performance impact,
64096409
# we might keep the module level only lookup for thing like 'builtins.int').
6410-
assert "." in fullname
6411-
6412-
splitted_modules = fullname.rsplit(".")
6413-
names = []
6414-
6415-
while splitted_modules and ".".join(splitted_modules) not in self.modules:
6416-
"""
6417-
Try to find the module in the modules dictionary.
6410+
module, name = fullname.rsplit(".", maxsplit=1)
6411+
6412+
if module in self.modules:
6413+
# If the module exists, look up the name in the module.
6414+
# This is the common case.
6415+
filenode = self.modules[module]
6416+
result = filenode.names.get(name)
6417+
if result is None and self.is_incomplete_namespace(module):
6418+
# TODO: More explicit handling of incomplete refs?
6419+
self.record_incomplete_ref()
6420+
return result
6421+
else:
6422+
# Else, try to find the longest prefix of the module name that is in the modules dictionary.
6423+
splitted_modules = fullname.split(".")
6424+
names = []
64186425

6419-
If the module is not found, pop the last element of the splitted list and append it to the names list.
6426+
while splitted_modules and ".".join(splitted_modules) not in self.modules:
6427+
names.append(splitted_modules.pop())
64206428

6421-
This is to find the longest prefix of the module name that is in the modules dictionary.
6422-
"""
6423-
names.append(splitted_modules.pop())
6429+
if not splitted_modules or not names:
6430+
# If no module or name is found, return None.
6431+
return None
64246432

6425-
if not splitted_modules or not names:
6426-
"""
6427-
If no module or name is found, return None.
6428-
"""
6429-
return None
6433+
# Reverse the names list to get the correct order of names.
6434+
names.reverse()
64306435

6431-
"""
6432-
Reverse the names list to get the correct order of names.
6433-
"""
6434-
names.reverse()
6436+
module = ".".join(splitted_modules)
6437+
filenode = self.modules[module]
6438+
result = filenode.names.get(names[0])
64356439

6436-
module = ".".join(splitted_modules)
6437-
filenode = self.modules[module]
6438-
result = filenode.names.get(names[0])
6439-
6440-
if result is None and self.is_incomplete_namespace(module):
6441-
# TODO: More explicit handling of incomplete refs?
6442-
self.record_incomplete_ref()
6440+
if result is None and self.is_incomplete_namespace(module):
6441+
# TODO: More explicit handling of incomplete refs?
6442+
self.record_incomplete_ref()
64436443

6444-
for part in names[1:]:
6445-
if result is not None and isinstance(result.node, TypeInfo):
6446-
result = result.node.names.get(part)
6447-
else:
6448-
return None
6449-
return result
6444+
for part in names[1:]:
6445+
if result is not None and isinstance(result.node, TypeInfo):
6446+
result = result.node.names.get(part)
6447+
else:
6448+
return None
6449+
return result
64506450

64516451
def object_type(self) -> Instance:
64526452
return self.named_type("builtins.object")

0 commit comments

Comments
 (0)