code: def ReplaceItem(self, document_link, new_document, options=None):
          
          CosmosClient.__ValidateResource(new_document)
          path = base.GetPathFromLink(document_link)
          document_id = base.GetResourceIdOrFullNameFromLink(document_link)
          
          # Python's default arguments are evaluated once when the function is defined, not each time the function is called (like it is in say, Ruby). 
          # This means that if you use a mutable default argument and mutate it, you will and have mutated that object for all future calls to the function as well.
          # So, using a non-mutable deafult in this case(None) and assigning an empty dict(mutable) inside the function so that it remains local
          # For more details on this gotcha, please refer http://docs.python-guide.org/en/latest/writing/gotchas/
          if options is None:
              options = {}
  
          # Extract the document collection link and add the partition key to options
          collection_link = base.GetItemContainerLink(document_link)
          options = self._AddPartitionKey(collection_link, new_document, options)
          
          return self.Replace(new_document,
                              path,
                              'docs',
                              document_id,
                              None,
                              options)
docs: Replaces a document and returns it.
  
          :param str document_link:
              The link to the document.
          :param dict new_document:
          :param dict options:
              The request options for the request.
  
          :return:
              The new Document.
          :rtype:
              dict