diff --git a/libcst/metadata/scope_provider.py b/libcst/metadata/scope_provider.py index ed0702f50..ccc6cebdb 100644 --- a/libcst/metadata/scope_provider.py +++ b/libcst/metadata/scope_provider.py @@ -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, ) } @@ -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): """ @@ -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, "") + # filter falsey strings out + return ".".join(filter(None, [self.parent._name_prefix, self.name, ""])) # even though we don't override the constructor. @@ -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. @@ -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("") + # filter falsey strings out + return ".".join(filter(None, [self.parent._name_prefix, ""])) # Generates dotted names from an Attribute or Name node: