code: def _repeat_length(cls, part):
          
          repeat_len = len(part)
          if repeat_len == 0:
              return repeat_len
  
          first_digit = part[0]
          limit = repeat_len // 2 + 1
          indices = (i for i in range(1, limit) if part[i] == first_digit)
          for index in indices:
              (quot, rem) = divmod(repeat_len, index)
              if rem == 0:
                  first_chunk = part[0:index]
                  if all(first_chunk == part[x:x + index] \
                     for x in range(index, quot * index, index)):
                      return index
          return repeat_len
docs: The length of the repeated portions of ``part``.
  
          :param part: a number
          :type part: list of int
          :returns: the first index at which part repeats
          :rtype: int
  
          If part does not repeat, result is the length of part.
  
          Complexity: O(len(part)^2)