Source code for mchammer._internal.bond

"""Bond class."""

from __future__ import annotations

from dataclasses import dataclass


[docs] @dataclass class Bond: """Bond between two atoms. Parameters: id: ID to be assigned to bond. atom_ids: IDs of atom 1 and atom 2 in bond, where atom 1 is always the smaller number and the IDs cannot be the same. """ id: int atom_ids: tuple[int, int] def __post_init__(self) -> None: """Post initialization of bond.""" if len(set(self.atom_ids)) != 2: # noqa: PLR2004 msg = "Two distinct atom ids are required." raise ValueError(msg) self.atom1_id, self.atom2_id = sorted(self.atom_ids)
[docs] def get_id(self) -> int: """Get bond ID.""" return self.id
[docs] def get_atom1_id(self) -> int: """Get ID of atom 1 in bond.""" return self.atom1_id
[docs] def get_atom2_id(self) -> int: """Get ID of atom 2 in bond.""" return self.atom2_id
def __str__(self) -> str: """String representation of Bond.""" return repr(self) def __repr__(self) -> str: """String representation of Bond.""" return ( f"{self.__class__.__name__}(id={self.get_id()}, " f"atom1_id={self.get_atom1_id()}, " f"atom2_id={self.get_atom2_id()})" )