Source code for kif_lib.model.snak_set
# Copyright (C) 2023-2024 IBM Corp.
# SPDX-License-Identifier: Apache-2.0
from collections.abc import Iterable
from typing import cast, NoReturn, Optional, Union
from .kif_object import TCallable
from .kif_object_set import KIF_ObjectSet
from .snak import Snak
TSnakSet = Union['SnakSet', Iterable[Snak]]
[docs]
class SnakSet(KIF_ObjectSet):
"""Set of snaks.
Parameters:
args: Snaks.
"""
@classmethod
def _check_arg_snak_set(
cls,
arg: TSnakSet,
function: Optional[Union[TCallable, str]] = None,
name: Optional[str] = None,
position: Optional[int] = None
) -> Union['SnakSet', NoReturn]:
return cast(SnakSet, cls._check_arg_kif_object_set(
arg, function, name, position))
[docs]
def __init__(self, *args: Snak):
super().__init__(*args)
def _preprocess_arg(self, arg, i):
return self._preprocess_arg_snak(arg, i)
@property
def args_set(self) -> frozenset[Snak]:
"""Set arguments as frozen set."""
return self.get_args_set()
[docs]
def get_args_set(self) -> frozenset[Snak]:
"""Gets set arguments as frozen set.
Returns:
Set arguments as set.
"""
return cast(frozenset[Snak], self._get_args_set())
[docs]
def union(self, *others: 'SnakSet') -> 'SnakSet':
"""Computes the union of set and `others`.
Parameters:
others: Snak sets.
Returns:
The resulting snak set.
"""
return cast(SnakSet, self._union(others))