Bases: DictDisplay
Dict comprehension expression.
Note that you can also directly insert a comprehension expression into a normal dictionary,
but that will become a generator comprehension and returns a pair of extra parenthesis.
Examples:
| d = dict_comp(kv(id_("a"), litint(1)).for_(id_("a")).in_(id_("range").call(litint(5)))
assert d.into_code() == "{a: 1 for a in range(5)}"
|
References
comprehension
.
Source code in synt/expr/dict.py
| class DictComprehension(DictDisplay):
r"""Dict comprehension expression.
Note that you can also directly insert a comprehension expression into a normal dictionary,
but that will become a generator comprehension and returns a pair of extra parenthesis.
Examples:
```python
d = dict_comp(kv(id_("a"), litint(1)).for_(id_("a")).in_(id_("range").call(litint(5)))
assert d.into_code() == "{a: 1 for a in range(5)}"
```
References:
[`comprehension`](https://docs.python.org/3/reference/
expressions.html#grammar-tokens-python-grammar-comprehension).
"""
comprehension: comp_expr.Comprehension
"""Internal comprehension expression."""
def __init__(
self,
comprehension: comp_expr.Comprehension
| comp_expr.ComprehensionBuilder
| comp_expr.ComprehensionNodeBuilder,
):
"""Initialize a new dict comprehension expression.
Args:
comprehension: Internal comprehension expression.
Raises:
ExpressionTypeException: Invalid dict comprehension result type,
typically not a [`KVPair`][synt.tokens.kv_pair.KVPair].
"""
if isinstance(comprehension, comp_expr.Comprehension):
comp = comprehension
elif isinstance(comprehension, comp_expr.ComprehensionBuilder):
comp = comprehension.build()
elif isinstance(comprehension, comp_expr.ComprehensionNodeBuilder):
comp = comprehension.build_comp()
else:
raise ValueError(
"Expect expression of type `Comprehension`, found `Unknown`."
)
if comp.elt.expr_type != expr.ExprType.KeyValuePair:
raise ValueError(
"Expect expression of type `KeyValuePair`, found `Unknown`."
)
self.comprehension = comp
def into_code(self) -> str:
return f"{{{self.comprehension.into_code()}}}"
|
comprehension
instance-attribute
Internal comprehension expression.
__init__
Initialize a new dict comprehension expression.
Parameters:
Raises:
Type |
Description |
ExpressionTypeException
|
Invalid dict comprehension result type,
typically not a KVPair .
|
Source code in synt/expr/dict.py
| def __init__(
self,
comprehension: comp_expr.Comprehension
| comp_expr.ComprehensionBuilder
| comp_expr.ComprehensionNodeBuilder,
):
"""Initialize a new dict comprehension expression.
Args:
comprehension: Internal comprehension expression.
Raises:
ExpressionTypeException: Invalid dict comprehension result type,
typically not a [`KVPair`][synt.tokens.kv_pair.KVPair].
"""
if isinstance(comprehension, comp_expr.Comprehension):
comp = comprehension
elif isinstance(comprehension, comp_expr.ComprehensionBuilder):
comp = comprehension.build()
elif isinstance(comprehension, comp_expr.ComprehensionNodeBuilder):
comp = comprehension.build_comp()
else:
raise ValueError(
"Expect expression of type `Comprehension`, found `Unknown`."
)
if comp.elt.expr_type != expr.ExprType.KeyValuePair:
raise ValueError(
"Expect expression of type `KeyValuePair`, found `Unknown`."
)
self.comprehension = comp
|
into_code
Source code in synt/expr/dict.py
| def into_code(self) -> str:
return f"{{{self.comprehension.into_code()}}}"
|