code: def TxKazooClient(reactor, pool, client):
      
      make_thimble = partial(Thimble, reactor, pool)
  
      wrapper = _RunCallbacksInReactorThreadWrapper(reactor, client)
      client_thimble = make_thimble(wrapper, _blocking_client_methods)
  
      def _Lock(path, identifier=None):
          """Return a wrapped :class:`kazoo.recipe.lock.Lock` for this client."""
          lock = client.Lock(path, identifier)
          return Thimble(reactor, pool, lock, _blocking_lock_methods)
  
      client_thimble.Lock = _Lock
      client_thimble.SetPartitioner = partial(_SetPartitionerWrapper,
                                              reactor, pool, client)
  
      # Expose these so e.g. recipes can access them from the kzclient
      client.reactor = reactor
      client.pool = pool
      client.kazoo_client = client
  
      return client_thimble
docs: Create a client for txkazoo.
  
      :param twisted.internet.interfaces.IReactorThreads reactor: The reactor
          used to interact with the thread pool.
      :param ThreadPool pool: The thread pool to which blocking calls will be
          deferred.
      :param kazoo.client.KazooClient client: The blocking Kazoo client, whose
          blocking methods will be deferred to the thread pool.
      :return: An object with a similar interface to the Kazoo client, but
          returning deferreds for all blocking methods. The actual method calls
          will be executed in the thread pool.