MCPcopy Create free account
hub / github.com/sqlalchemy/sqlalchemy / visit_alias

Method visit_alias

lib/sqlalchemy/sql/compiler.py:4282–4380  ·  view source on GitHub ↗
(
        self,
        alias,
        asfrom=False,
        ashint=False,
        iscrud=False,
        fromhints=None,
        subquery=False,
        lateral=False,
        enclosing_alias=None,
        from_linter=None,
        **kwargs,
    )

Source from the content-addressed store, hash-verified

4280 return self.visit_column(element, **kw)
4281
4282 def visit_alias(
4283 self,
4284 alias,
4285 asfrom=False,
4286 ashint=False,
4287 iscrud=False,
4288 fromhints=None,
4289 subquery=False,
4290 lateral=False,
4291 enclosing_alias=None,
4292 from_linter=None,
4293 **kwargs,
4294 ):
4295 if lateral:
4296 if "enclosing_lateral" not in kwargs:
4297 # if lateral is set and enclosing_lateral is not
4298 # present, we assume we are being called directly
4299 # from visit_lateral() and we need to set enclosing_lateral.
4300 assert alias._is_lateral
4301 kwargs["enclosing_lateral"] = alias
4302
4303 # for lateral objects, we track a second from_linter that is...
4304 # lateral! to the level above us.
4305 if (
4306 from_linter
4307 and "lateral_from_linter" not in kwargs
4308 and "enclosing_lateral" in kwargs
4309 ):
4310 kwargs["lateral_from_linter"] = from_linter
4311
4312 if enclosing_alias is not None and enclosing_alias.element is alias:
4313 inner = alias.element._compiler_dispatch(
4314 self,
4315 asfrom=asfrom,
4316 ashint=ashint,
4317 iscrud=iscrud,
4318 fromhints=fromhints,
4319 lateral=lateral,
4320 enclosing_alias=alias,
4321 **kwargs,
4322 )
4323 if subquery and (asfrom or lateral):
4324 inner = "(%s)" % (inner,)
4325 return inner
4326 else:
4327 kwargs["enclosing_alias"] = alias
4328
4329 if asfrom or ashint:
4330 if isinstance(alias.name, elements._truncated_label):
4331 alias_name = self._truncated_identifier("alias", alias.name)
4332 else:
4333 alias_name = alias.name
4334
4335 if ashint:
4336 return self.preparer.format_alias(alias, alias_name)
4337 elif asfrom:
4338 if from_linter:
4339 from_linter.froms[alias._de_clone()] = alias_name

Callers 4

visit_subqueryMethod · 0.95
visit_lateralMethod · 0.95
visit_tablesampleMethod · 0.95

Calls 9

_truncated_identifierMethod · 0.95
format_from_hint_textMethod · 0.95
format_aliasMethod · 0.80
_de_cloneMethod · 0.80
_compiler_dispatchMethod · 0.45
joinMethod · 0.45
quoteMethod · 0.45
processMethod · 0.45

Tested by

no test coverage detected