class_docstr: A version object that can be compared to tuple of length 1--4:
  
  >>> attr.VersionInfo(19, 1, 0, "final")  <= (19, 2)
  True
  >>> attr.VersionInfo(19, 1, 0, "final") < (19, 1, 1)
  True
  >>> vi = attr.VersionInfo(19, 2, 0, "final")
  >>> vi < (19, 1, 1)
  False
  >>> vi < (19,)
  False
  >>> vi == (19, 2,)
  True
  >>> vi == (19, 2, 1)
  False
  
  .. versionadded:: 19.2
docstr: Ensure *other* is a tuple of a valid length.
  
  Returns a possibly transformed *other* and ourselves as a tuple of
  the same length as *other*.
docstr_tok: ["Ensure","*","other","*","is","a","tuple","of","a","valid","length",".","Returns","a","possibly","transformed","*","other","*","and","ourselves","as","a","tuple","of","the","same","length","as","*","other","*","."]
code: def _ensure_tuple(self, other):
      """
      Ensure *other* is a tuple of a valid length.
  
      Returns a possibly transformed *other* and ourselves as a tuple of
      the same length as *other*.
      """
  
      if self.__class__ is other.__class__:
          other = astuple(other)
  
      if not isinstance(other, tuple):
          raise NotImplementedError
  
      if not (1 <= len(other) <= 4):
          raise NotImplementedError
  
      return astuple(self)[: len(other)], other
  
file_path: catboost/contrib/python/attrs/py3/attr/_version_info.py
imports: from functools import total_ordering
  from ._funcs import astuple
  from ._make import attrib, attrs
label_desc: Use image node_id 2 for calling the VersionInfo obj's underlying member method code with example usage: obj._ensure_tuple(other) and returns: astuple,  other