def METHOD_NAME(
    self,
    value: Union[DataTV, Iterable[DataTV]],
    step: Optional[float] = None,
    timestamp: Optional[float] = None,
    wait: bool = False,
    **kwargs,
) -> None:
    """log is a deprecated method, this code should be removed in future"""
    if step is not None:
        verify_type("step", step, (float, int))
    if timestamp is not None:
        verify_type("timestamp", timestamp, (float, int))
    if is_stringify_value(value):
        value = self._handle_stringified_value(value)
    if is_collection(value):
        if step is not None and len(value) > 1:
            raise ValueError("Collection of values is not supported for explicitly defined 'step'.")
        steps = None if step is None else [step] * len(value)
        timestamps = None if timestamp is None else [timestamp] * len(value)
        value = self._data_to_value(value, steps=steps, timestamps=timestamps, **kwargs)
    else:
        steps = None if step is None else [step]
        timestamps = None if timestamp is None else [timestamp]
        value = self._data_to_value([value], steps=steps, timestamps=timestamps, **kwargs)
    ops = self._get_log_operations_from_value(value)
    with self._container.lock():
        for op in ops:
            self._enqueue_operation(op, wait=wait)