def __init__(
        self,
        value: DURATION_LIKE | int = None,
        *,  # Force keyword args.
        picos: _NUMERIC_INPUT_TYPE = 0,
        nanos: _NUMERIC_INPUT_TYPE = 0,
        micros: _NUMERIC_INPUT_TYPE = 0,
        millis: _NUMERIC_INPUT_TYPE = 0,
    ) -> None:
        """Initializes a Duration with a time specified in some unit.

        If multiple arguments are specified, their contributions are added.

        Args:
            value: A value with a pre-specified time unit. Currently only
                supports 0 and `datetime.timedelta` instances.
            picos: A number of picoseconds to add to the time delta.
            nanos: A number of nanoseconds to add to the time delta.
            micros: A number of microseconds to add to the time delta.
            millis: A number of milliseconds to add to the time delta.

        Raises:
            TypeError: If the given value is not of a `cirq.DURATION_LIKE` type.

        Examples:
            >>> print(cirq.Duration(nanos=100))
            100 ns
            >>> print(cirq.Duration(micros=1.5 * sympy.Symbol('t')))
            (1500.0*t) ns
        """
        self._time_vals: list[_NUMERIC_INPUT_TYPE] = [0, 0, 0, 0]
        self._multipliers = [1, 1000, 1000_000, 1000_000_000]
        if value is not None and value != 0:
            if isinstance(value, datetime.timedelta):
                # timedelta has microsecond resolution.
                self._time_vals[2] = int(value / datetime.timedelta(microseconds=1))
            elif isinstance(value, Duration):
                self._time_vals = value._time_vals
            else:
                raise TypeError(f'Not a `cirq.DURATION_LIKE`: {repr(value)}.')
        input_vals = [picos, nanos, micros, millis]
        self._time_vals = _add_time_vals(self._time_vals, input_vals)
Initializes a Duration with a time specified in some unit.

        If multiple arguments are specified, their contributions are added.

        Args:
            value: A value with a pre-specified time unit. Currently only
                supports 0 and `datetime.timedelta` instances.
            picos: A number of picoseconds to add to the time delta.
            nanos: A number of nanoseconds to add to the time delta.
            micros: A number of microseconds to add to the time delta.
            millis: A number of milliseconds to add to the time delta.

        Raises:
            TypeError: If the given value is not of a `cirq.DURATION_LIKE` type.

        Examples:
            >>> print(cirq.Duration(nanos=100))
            100 ns
            >>> print(cirq.Duration(micros=1.5 * sympy.Symbol('t')))
            (1500.0*t) ns
        
cirq-core/cirq/value/duration.py