code: def __init__(
      self,
      values: Union[Iterable[str], StringifyValue],
      timestamps: Optional[Sequence[float]] = None,
      steps: Optional[Sequence[float]] = None,
  ):
      if is_stringify_value(values):
          values = list(map(str, values.value))
  
      if not is_collection(values):
          raise TypeError("`values` is not a collection")
  
      self._truncated = any(
          [
              len(value) > MAX_STRING_SERIES_VALUE_LENGTH
              for value in values
          ]
      )
      self._values = [
          value[:MAX_STRING_SERIES_VALUE_LENGTH] for value in values
      ]
  
      if steps is None:
          self._steps = cycle([None])
      else:
          assert len(values) == len(steps)
          self._steps = steps
  
      if timestamps is None:
          self._timestamps = cycle([time.time()])
      else:
          assert len(values) == len(timestamps)
          self._timestamps = timestamps
  
file_path: neptune-client/src/neptune/types/series/string_series.py
imports: import time
  from itertools import cycle
  from typing import TYPE_CHECKING, Iterable, Optional, Sequence, TypeVar, Union
  from neptune.internal.types.stringify_value import StringifyValue
  from neptune.internal.utils import is_collection, is_stringify_value
  from neptune.types.series.series import Series
label_desc: Use image node_id 1 to create a new StringSeries object from inherited base classes: Series with example: obj = StringSeries(values, timestamps, steps)