code: def put(self, key, value, lease=None, prev_kv=False):
          
          put_request = self._build_put_request(key, value, lease=lease,
                                                prev_kv=prev_kv)
          return self.kvstub.Put(
              put_request,
              self.timeout,
              credentials=self.call_credentials,
              metadata=self.metadata
          )
docs: Save a value to etcd.
  
          Example usage:
  
          .. code-block:: python
  
              >>> import etcd3
              >>> etcd = etcd3.client()
              >>> etcd.put('/thing/key', 'hello world')
  
          :param key: key in etcd to set
          :param value: value to set key to
          :type value: bytes
          :param lease: Lease to associate with this key.
          :type lease: either :class:`.Lease`, or int (ID of lease)
          :param prev_kv: return the previous key-value pair
          :type prev_kv: bool
          :returns: a response containing a header and the prev_kv
          :rtype: :class:`.rpc_pb2.PutResponse`