docs: def ensure_index(self, key_or_list, cache_for=300, **kwargs):
          """**DEPRECATED** - Ensures that an index exists on this collection.
  
          .. versionchanged:: 3.0
              **DEPRECATED**
          """
          warnings.warn("ensure_index is deprecated. Use create_index instead.",
                        DeprecationWarning, stacklevel=2)
          # The types supported by datetime.timedelta.
          if not (isinstance(cache_for, integer_types) or
                  isinstance(cache_for, float)):
              raise TypeError("cache_for must be an integer or float.")
  
          if "drop_dups" in kwargs:
              kwargs["dropDups"] = kwargs.pop("drop_dups")
  
          if "bucket_size" in kwargs:
              kwargs["bucketSize"] = kwargs.pop("bucket_size")
  
          keys = helpers._index_list(key_or_list)
          name = kwargs.setdefault("name", helpers._gen_index_name(keys))
  
          # Note that there is a race condition here. One thread could
          # check if the index is cached and be preempted before creating
          # and caching the index. This means multiple threads attempting
          # to create the same index concurrently could send the index
          # to the server two or more times. This has no practical impact
          # other than wasted round trips.
          if not self.__database.client._cached(self.__database.name,
                                                self.__name, name):
              self.__create_index(keys, kwargs)
              self.__database.client._cache_index(self.__database.name,
                                                  self.__name, name, cache_for)
              return name
          return None