Использование Pydantic для определения AST логических выраженийPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Использование Pydantic для определения AST логических выражений

Сообщение Anonymous »

Я хотел бы использовать Pydantic для определения и проверки AST запросов, которые будут применяться к кадру данных Pandas. Вот мой код:

Код: Выделить всё

from typing import List, Literal, Optional, Union
from pydantic import BaseModel, Field
import pandas as pd

class ColumnCondition(BaseModel):
"""
A class that represents a condition that is applied to a single column.
"""
tag: Literal["ColumnCondition"] = "ColumnCondition"
column: str = Field(..., title="The name of the column to apply the condition to.")
operator: Literal["==", "!=", "", "="] = Field(
..., title="The operator of the condition."
)
value: Optional[str] = Field(None, title="The value to compare the column to.")

class AndCondition(BaseModel):
"""
A class that represents an 'and' condition that is applied to two or more conditions.
"""
tag: Literal["AndCondition"] = "AndCondition"
conditions: List["Condition"]

Condition = Union[ColumnCondition, AndCondition]

class ConditionModel(BaseModel):
condition: Condition = Field(discriminator="tag")

def get_column_metadata(df: pd.DataFrame) -> dict:
return {col: str(dtype) for col, dtype in df.dtypes.items()}

if __name__ == "__main__":
"""
Example
"""
condition_json = {
"tag": "AndCondition",
"conditions": [
{
"tag": "ColumnCondition",
"column": "original_amount.currency",
"operator": ">=",
"value": "100",
},
{
"tag": "ColumnCondition",
"column": "original_amount.currency",
"operator": "

Подробнее здесь: [url]https://stackoverflow.com/questions/79262610/using-pydantic-to-define-ast-of-boolean-expressions[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»