Source code for deepmd.dpmodel.utils.seed

# SPDX-License-Identifier: LGPL-3.0-or-later
from typing import (
    List,
    Optional,
    Union,
    overload,
)


@overload
[docs] def child_seed(seed: None, idx: int) -> None: ...
@overload def child_seed(seed: Union[int, List[int]], idx: int) -> List[int]: ... def child_seed(seed: Optional[Union[int, List[int]]], idx: int) -> Optional[List[int]]: """Generate a child seed from a parent seed. Parameters ---------- seed The parent seed. idx The index of the child seed. Returns ------- Optional[List[int]] The child seed. """ # See https://numpy.org/doc/stable/reference/random/parallel.html#sequence-of-integer-seeds if seed is None: return None elif isinstance(seed, int): return [idx, seed] elif isinstance(seed, list): return [idx, *seed] else: raise TypeError(f"seed must be int or list, not {type(seed)}")