code: def put(self, url, data=None, verify=False,
              headers=None, proxies=None, timeout=60, **kwargs):
          
  
          self.log.debug("Put a request to %s with data: %s",
                         url, data)
          response = requests.put(url, data=data,
                                  verify=verify, headers=headers,
                                  proxies=proxies, timeout=timeout, **kwargs)
          if response.status_code not in [200, 201]:
              self.log.error('Failed PUT request at <%s> with response: %s',
                             url,
                             response.content)
              response.raise_for_status()
          return response
docs: Sends a PUT request. Refactor from requests module
  
          :param url: URL for the new :class:`Request` object.
          :param data: (optional) Dictionary, bytes, or file-like object to
              send in the body of the :class:`Request`.
          :param verify: (optional) if ``True``, the SSL cert will be verified.
              A CA_BUNDLE path can also be provided.
          :param headers: (optional) Dictionary of HTTP Headers to send with
              the :class:`Request`.
          :param proxies: (optional) Dictionary mapping protocol to the URL of
              the proxy.
          :param timeout: (optional) How long to wait for the server to send data
              before giving up, as a float, or a :ref:`(connect timeout, read
              timeout) <timeouts>` tuple.
          :type timeout: float or tuple
          :param \*\*kwargs: Optional arguments that ``request`` takes.
          :return: :class:`Response <Response>` object
          :rtype: requests.Response