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]
Я хотел бы использовать Pydantic для определения и проверки AST запросов, которые будут применяться к кадру данных Pandas. Вот мой код: [code]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()}
Я хочу создать преобразователь, который преобразует все кавычки f-строк из одинарных в тройные кавычки, но оставляет вложенные f-строки нетронутыми.
Например, следующее выражение остался нетронутым.
f \
Hello {developer_name}
My name is...
Я хочу создать преобразователь, который преобразует все кавычки f-строк из одинарных в тройные кавычки, но оставляет вложенные f-строки нетронутыми.
Например, следующее выражение остался нетронутым.
f \
Hello {developer_name}
My name is...
В те времена, когда я большую часть своей работы выполнял на C и C++, я, естественно, вручную применял теорему де Моргана для оптимизации любых нетривиальных логических выражений.
Полезно ли это делать на C# или оптимизатор считает это ненужным?...