diff --git a/docker/client.py b/docker/client.py index c11980f286..d8f79c9206 100644 --- a/docker/client.py +++ b/docker/client.py @@ -312,7 +312,7 @@ def stream_result(): if line: yield line - return stream and stream_result(response) or \ + return stream_result() if stream else \ self._result(response, binary=True) return stream and self._multiplexed_socket_stream_helper(response) or \ @@ -651,7 +651,7 @@ def push(self, repository, stream=False): response = self._post_json(u, None, headers=headers, stream=stream) else: - response = self._post_json(u, authcfg, stream=stream) + response = self._post_json(u, None, stream=stream) return stream and self._stream_helper(response) \ or self._result(response) diff --git a/docker/utils/utils.py b/docker/utils/utils.py index 2b5343985c..a4c8778577 100644 --- a/docker/utils/utils.py +++ b/docker/utils/utils.py @@ -15,6 +15,7 @@ import io import tarfile import tempfile +from distutils.version import StrictVersion import requests import six @@ -51,7 +52,25 @@ def tar(path): def compare_version(v1, v2): - return float(v2) - float(v1) + """Compare docker versions + + >>> v1 = '1.9' + >>> v2 = '1.10' + >>> compare_version(v1, v2) + 1 + >>> compare_version(v2, v1) + -1 + >>> compare_version(v2, v2) + 0 + """ + s1 = StrictVersion(v1) + s2 = StrictVersion(v2) + if s1 == s2: + return 0 + elif s1 > s2: + return -1 + else: + return 1 def ping(url):