The boto config has a num_retries parameter for uploads.

num_retries
The number of times to retry failed requests to an AWS server. If boto
  receives an error from AWS, it will attempt to recover and retry the
  request. The default number of retries is 5 but you can change the
  default with this option.

My understanding is that this parameter governs how many times to retry on commands like set_content_from_string. According to the documentation, the same command will fail if the md5 checksum does not match upon upload. My question is, will boto also retry upon checksum failure, or does num_retry apply to a separate class of failures?
When boto uploads a file to S3 it calculates the MD5 checksum locally, sends that checksum to S3 as the Content-MD5 header and then checks the value of the ETag header returned by the S3 service against the previously computed MD5 checksum.  If the ETag header does not match the MD5 it raises an S3DataError exception.  This exception is a subclass of ClientError and client errors are not retried by boto.
It is also possible for the S3 service to return a BadDigest error if the Content-MD5 header we provide does not match the MD5 checksum computed by the service.  This is a 400 response from S3 and is also considered a client error and would not be retried.
Does Boto retry on failed md5 checks?