"""
Is in attribute condition
"""
import logging
from marshmallow import post_load
from .base import AttributeCondition, AttributeConditionSchema
from ..collection.base import is_collection
LOG = logging.getLogger(__name__)
[docs]class IsInAttribute(AttributeCondition):
"""
Condition for attribute value in that of another
"""
def _is_satisfied(self, what) -> bool:
# Check if value is a collection
if not is_collection(self.value):
LOG.debug(
"Invalid type '%s' for attribute value at path '%s' for element '%s'."
" Condition not satisfied.",
type(self.value),
self.path,
self.ace
)
return False
return what in self.value
[docs]class IsInAttributeSchema(AttributeConditionSchema):
"""
JSON schema for is in attribute condition
"""
[docs] @post_load
def post_load(self, data, **_): # pylint: disable=missing-docstring,no-self-use
return IsInAttribute(**data)