def chosen_angle_to_canonical_half_turns(
    half_turns: type_alias.TParamVal | None = None,
    rads: float | None = None,
    degs: float | None = None,
    default: float = 1.0,
) -> type_alias.TParamVal:
    """Returns a canonicalized half_turns based on the given arguments.

    At most one of half_turns, rads, degs must be specified. If none are
    specified, the output defaults to half_turns=1.

    Args:
        half_turns: The number of half turns to rotate by.
        rads: The number of radians to rotate by.
        degs: The number of degrees to rotate by
        default: The half turns angle to use if nothing else is specified.

    Returns:
        A number of half turns.
    """
    return canonicalize_half_turns(
        chosen_angle_to_half_turns(half_turns=half_turns, rads=rads, degs=degs, default=default)
    )
Returns a canonicalized half_turns based on the given arguments.

    At most one of half_turns, rads, degs must be specified. If none are
    specified, the output defaults to half_turns=1.

    Args:
        half_turns: The number of half turns to rotate by.
        rads: The number of radians to rotate by.
        degs: The number of degrees to rotate by
        default: The half turns angle to use if nothing else is specified.

    Returns:
        A number of half turns.
    
cirq-core/cirq/value/angle.py