docs: def put(self, path, data, filename=None):
          """Make a PUT request.
  
          If a `filename` is not specified, then the data must already be
          JSON-encoded. We specify the Content-Type accordingly.
  
          Else, we make a multipart/form-encoded request. In this case, the data
          variable must be a dict-like object. The file must already be
          suitably (usually UTF-8) encoded.
  
          Args:
              `path`: The path to the resource.
              `data`: The data to send. The data must already be JSON-encoded.
              `filename`: The filename of the file to send.
          Returns:
              The content of the response.
          Raises:
              An exception depending on the HTTP status code of the response.
          """
          return self._send('PUT', path, data, filename)