docs: def _update_hash(self, arg):
          """ Takes an argument and updates the hash.
          The argument can be an np.array, string, or list
          of things that are convertable to strings.
          """
          if isinstance(arg, np.ndarray):
              self.ahash.update(arg.view(np.uint8))
          elif isinstance(arg, list):
              [self._update_hash(a) for a in arg]
          else:
              self.ahash.update(str(arg).encode('utf-8'))