Source code for pqg.selection

import typing as t
from dataclasses import dataclass, field

from .operation import Operation


[docs] @dataclass class Selection(Operation): """ Represents a selection operation in a query. Attributes: conditions (List[Tuple[str, str, Any, str]]): List of selection conditions and operators. Each tuple contains (column, operation, value, next_condition_operator). The last tuple's next_condition_operator is ignored. """ conditions: t.List[t.Tuple[str, str, t.Any, t.Optional[str]]] = field(default_factory=list)
[docs] def apply(self, entity: str) -> str: if not self.conditions: return '' formatted_conditions = [] for col, op, val, next_op in self.conditions: if op in ['.str.startswith', '.isin']: condition = f'({entity}[{col}]{op}({val}))' else: condition = f'({entity}[{col}] {op} {val})' if next_op: condition += f' {next_op} ' formatted_conditions.append(f'{condition}') return f"[{''.join(formatted_conditions)}]"