Source code for kif_lib.model.kif_object_set

# Copyright (C) 2023-2024 IBM Corp.
# SPDX-License-Identifier: Apache-2.0

from collections.abc import Collection, Iterable
from typing import cast, NoReturn, Optional, Union

from .kif_object import KIF_Object, TCallable

T_KIF_ObjectSet = Union['KIF_ObjectSet', Iterable[KIF_Object]]


[docs] class KIF_ObjectSet(KIF_Object): """Set of KIF objects. Parameters: args: objects. """ @classmethod def _check_arg_kif_object_set( cls, arg: T_KIF_ObjectSet, function: Optional[Union[TCallable, str]] = None, name: Optional[str] = None, position: Optional[int] = None ) -> Union['KIF_ObjectSet', NoReturn]: if not KIF_Object.test(arg) and isinstance(arg, Iterable): arg = cls(*arg) return cast(KIF_ObjectSet, cls._check_arg_isinstance( arg, KIF_ObjectSet, function, name, position)) __slots__ = ( '_args_set', ) _args_set: frozenset[KIF_Object]
[docs] def __init__(self, *args: KIF_Object): super().__init__(*args)
def _set_args(self, args): self._args_set = frozenset(args) self._args = tuple(sorted(self._args_set)) def _preprocess_arg(self, arg, i): return self._preprocess_arg_kif_object(arg, i) def __contains__(self, v): return v in self._args_set if KIF_Object.test(v) else False def _get_args_set(self) -> frozenset[KIF_Object]: return self._args_set def _union(self, others: Collection['KIF_ObjectSet']) -> 'KIF_ObjectSet': return self.__class__(*self._args_set.union(*map( KIF_ObjectSet._get_args_set, others)))