Skip to content

Commit

Permalink
Clarify why we do join(filter(None,...
Browse files Browse the repository at this point in the history
  • Loading branch information
lpetre committed Jun 21, 2022
1 parent 6c5fe1c commit e81678c
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions libcst/metadata/scope_provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ def _index(self) -> int:
def get_qualified_names_for(self, full_name: str) -> Set[QualifiedName]:
return {
QualifiedName(
".".join(filter(None, [self.scope._name_prefix, full_name])),
self.scope._maybe_dotted_name(full_name),
QualifiedNameSource.LOCAL,
)
}
Expand Down Expand Up @@ -581,6 +581,11 @@ 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: 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 @@ -688,7 +693,7 @@ def __getitem__(self, name: str) -> Set[BaseAssignment]:
return self.parent._getitem_from_self_or_parent(name)

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


# even though we don't override the constructor.
Expand Down Expand Up @@ -737,7 +742,7 @@ 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 ".".join(filter(None, [self.parent._name_prefix, self.name]))
return self.parent._maybe_dotted_name(self.name)


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

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


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

0 comments on commit e81678c

Please sign in to comment.