from datetime import timedelta
import errno
import gzip
+import io
import logging
import multiprocessing
from multiprocessing.dummy import Pool as ThreadPool
from defusedxml.minidom import parseString
import glob2 # Switch to glob when Python < 3.5 support is dropped
import requests
+import six
log = logging.getLogger(__name__)
log.info(MAGIC_STRING)
resp = requests.get('{}/consoleText'.format(_format_url(build_url)))
- with open('console.log', 'w+') as f:
- f.write(str(resp.text.split(MAGIC_STRING)[0].encode('utf-8')))
+ with io.open('console.log', 'w+', encoding='utf-8') as f:
+ f.write(six.text_type(resp.content.decode('utf-8').split(MAGIC_STRING)[0]))
resp = requests.get('{}/timestamps?time=HH:mm:ss&appendLog'.format(_format_url(build_url)))
- with open('console-timestamp.log', 'w+') as f:
- f.write(str(resp.text.split(MAGIC_STRING)[0].encode('utf-8')))
+ with io.open('console-timestamp.log', 'w+', encoding='utf-8') as f:
+ f.write(six.text_type(resp.content.decode('utf-8').split(MAGIC_STRING)[0]))
_compress_text(work_dir)
--- /dev/null
+---
+fixes:
+ - |
+ Unicode compatibility in deploy_logs for Python 2 and 3 was improved in
+ several ways. The former method to pull and write log files did not work
+ properly in Python 3, and was not very robust for Python 2. Both reading
+ and writing logs is now handled in a unicode-safe, 2/3 compatible way.