Source code for pairinteraction._wrapped.state.state_pair

# SPDX-FileCopyrightText: 2024 Pairinteraction Developers
# SPDX-License-Identifier: LGPL-3.0-or-later

from typing import TYPE_CHECKING, Any, TypeVar

from pairinteraction._wrapped.ket.ket_pair import KetPair, KetPairComplex, KetPairReal
from pairinteraction._wrapped.state.state import StateBase

if TYPE_CHECKING:
    from pairinteraction._wrapped.basis.basis_pair import BasisPair, BasisPairComplex, BasisPairReal

KetPairType = TypeVar("KetPairType", bound="KetPair", covariant=True)
BasisPairType = TypeVar("BasisPairType", bound="BasisPair[Any, Any]", covariant=True)


[docs] class StatePair(StateBase[BasisPairType, KetPairType]): """Pair state of two atoms. Currently StatePair objects don't offer any additional functionality. """
[docs] def get_amplitude(self, other: Any) -> Any: raise NotImplementedError("StatePair.get_amplitude not implemented yet")
[docs] def get_overlap(self, other: Any) -> Any: raise NotImplementedError("StatePair.get_overlap not implemented yet")
[docs] def get_matrix_element(self, other: Any, *args: Any, **kwargs: Any) -> Any: raise NotImplementedError("StatePair.get_matrix_element not implemented yet")
class StatePairReal(StatePair["BasisPairReal", "KetPairReal"]): _basis: "BasisPairReal" _TypeKet = KetPairReal class StatePairComplex(StatePair["BasisPairComplex", "KetPairComplex"]): _basis: "BasisPairComplex" _TypeKet = KetPairComplex