Skip to content

Commit

Permalink
Faster qualified name format
Browse files Browse the repository at this point in the history
  • Loading branch information
lpetre committed Jun 21, 2022
1 parent 42164f8 commit a6d2763
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions libcst/metadata/scope_provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,9 @@ def _index(self) -> int:
def get_qualified_names_for(self, full_name: str) -> Set[QualifiedName]:
return {
QualifiedName(
self.scope._maybe_dotted_name(full_name),
f"{self.scope._name_prefix}.{full_name}"
if self.scope._name_prefix
else full_name,
QualifiedNameSource.LOCAL,
)
}
Expand Down Expand Up @@ -581,11 +583,6 @@ def accesses(self) -> Accesses:
"""Return an :class:`~libcst.metadata.Accesses` contains all accesses in current scope."""
return Accesses(self._accesses_by_name)

# makes a dot separated name but filters out empty strings
def _maybe_dotted_name(self, *args: Optional[str]) -> str:
# filter(None, ...) removes all falsey values (ie empty string)
return ".".join(filter(None, [self._name_prefix, *args]))


class BuiltinScope(Scope):
"""
Expand Down Expand Up @@ -693,7 +690,8 @@ def __getitem__(self, name: str) -> Set[BaseAssignment]:
return self.parent._getitem_from_self_or_parent(name)

def _make_name_prefix(self) -> str:
return self.parent._maybe_dotted_name(self.name, "<locals>")
# filter falsey strings out
return ".".join(filter(None, [self.parent._name_prefix, self.name, "<locals>"]))


# even though we don't override the constructor.
Expand Down Expand Up @@ -742,7 +740,8 @@ def _contains_in_self_or_parent(self, name: str) -> bool:
return self.parent._contains_in_self_or_parent(name)

def _make_name_prefix(self) -> str:
return self.parent._maybe_dotted_name(self.name)
# filter falsey strings out
return ".".join(filter(None, [self.parent._name_prefix, self.name]))


# even though we don't override the constructor.
Expand All @@ -760,7 +759,8 @@ class ComprehensionScope(LocalScope):
# https://www.python.org/dev/peps/pep-0572/#scope-of-the-target

def _make_name_prefix(self) -> str:
return self.parent._maybe_dotted_name("<comprehension>")
# filter falsey strings out
return ".".join(filter(None, [self.parent._name_prefix, "<comprehension>"]))


# Generates dotted names from an Attribute or Name node:
Expand Down

0 comments on commit a6d2763

Please sign in to comment.