MCPcopy
hub / github.com/django/django / collect_replacements

Method collect_replacements

django/db/models/sql/compiler.py:680–697  ·  view source on GitHub ↗
(expressions)

Source from the content-addressed store, hash-verified

678 replacements = {}
679
680 def collect_replacements(expressions):
681 while expressions:
682 expr = expressions.pop()
683 if expr in replacements:
684 continue
685 elif select_alias := select.get(expr):
686 replacements[expr] = select_alias
687 elif isinstance(expr, Lookup):
688 expressions.extend(expr.get_source_expressions())
689 elif isinstance(expr, Ref):
690 if expr.refs not in select_aliases:
691 expressions.extend(expr.get_source_expressions())
692 else:
693 num_qual_alias = len(qual_aliases)
694 select_alias = f"qual{num_qual_alias}"
695 qual_aliases.add(select_alias)
696 inner_query.add_annotation(expr, select_alias)
697 replacements[expr] = select_alias
698
699 collect_replacements(list(self.qualify.leaves()))
700 self.qualify = self.qualify.replace_expressions(

Callers

nothing calls this directly

Calls 6

extendMethod · 0.80
add_annotationMethod · 0.80
popMethod · 0.45
getMethod · 0.45
addMethod · 0.45

Tested by

no test coverage detected