Como especificar solicitações python http put body?

Eu estou tentando reescrever algum código python antigo com o módulo de pedidos. O objetivo é fazer o upload de um anexo. O servidor de correio requer a seguinte especificação:

https://api.elasticemail.com/attachments/upload?username=yourusername&api_key=yourapikey&file=yourfilename

Código antigo que funciona:

h = httplib2.Http()        
        resp, content = h.request('https://api.elasticemail.com/attachments/upload?username=omer&api_key=b01ad0ce&file=tmp.txt', 
        "PUT", body=file(filepath).read(), 
        headers={'content-type':'text/plain'} )

Não encontrou como usar a parte do corpo nos pedidos.

Eu consegui fazer o seguinte:

 response = requests.put('https://api.elasticemail.com/attachments/upload',
                    data={"file":filepath},                         
                     auth=('omer', 'b01ad0ce')                  
                     )

Mas não tenho idéia de como especificar a parte do corpo com o conteúdo do arquivo.

Obrigado pela ajuda. Omer

questionAnswers(2)

yourAnswerToTheQuestion