Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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