Skip to content

Commit

Permalink
feat: update trait append action to use field_validator
Browse files Browse the repository at this point in the history
Add field_validator from pydantic for 'remove' field validation.
Remove TODO comment related to the old validator.
Add print statement for debugging destination in dot.
  • Loading branch information
atompie committed Aug 22, 2024
1 parent cb3eebf commit 0c3ca7e
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions tracardi/process_engine/action/v1/traits/append_trait_action.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from typing import Dict, List, Optional, Any, Union

from pydantic import validator, ValidationError
from pydantic import validator, ValidationError, field_validator
from pydantic_core.core_schema import ValidationInfo

from tracardi.service.plugin.domain.register import Plugin, Spec, MetaData, Documentation, PortDoc
from tracardi.service.plugin.domain.result import Result
Expand All @@ -15,10 +16,9 @@ class Configuration(PluginConfig):
append: Optional[Dict[str, Any]] = {}
remove: Optional[Dict[str, Union[Any, List[Any]]]] = {}

# TODO[pydantic]: We couldn't refactor the `validator`, please replace it by `field_validator` manually.
# Check https://docs.pydantic.dev/dev-v2/migration/#changes-to-validators for more information.
@validator("remove")
def validate_remove(cls, value, values):
@field_validator("remove")
def validate_remove(cls, value, info: ValidationInfo):
values = info.data
if 'append' not in values and 'remove' not in values:
raise ValueError("Please define `append` or `remove` in config section.")

Expand All @@ -42,6 +42,7 @@ async def run(self, payload: dict, in_edge=None) -> Result:

for destination, value in self.config.append.items():
value = dot[value]
print(destination, value, destination in dot)
if destination in dot:
if not isinstance(dot[destination], list):
# Make it a list with original value
Expand Down

0 comments on commit 0c3ca7e

Please sign in to comment.