class_docstr: Composable cycles.
  
  This class has compositions methods:
  
  ``+``
    for 'inner' products (zip)
  
  ``+=``
    in-place ``+``
  
  ``*``
    for outer products (`itertools.product`) and integer multiplication
  
  ``*=``
    in-place ``*``
  
  and supports basic slicing via ``[]``.
  
  Parameters
  ----------
  left, right : Cycler or None
      The 'left' and 'right' cyclers.
  op : func or None
      Function which composes the 'left' and 'right' cyclers.
code: def __eq__(self, other: object) -> bool:
      if not isinstance(other, Cycler):
          return False
      if len(self) != len(other):
          return False
      if self.keys ^ other.keys:
          return False
      return all(a == b for a, b in zip(self, other))
  
imports: from __future__ import annotations
  from collections.abc import Hashable, Iterable, Generator
  import copy
  from functools import reduce
  from itertools import product, cycle
  from operator import mul, add
  from typing import TypeVar, Generic, Callable, Union, Dict, List, Any, overload, cast
label_desc: Use image node_id 19 for calling the Cycler obj's underlying member method code with example usage: obj.__eq__(other) and returns: all, False, False, False