# Path: zoe_lib/version.py
# ZOE_API_VERSION = '0.7'
# 
# Path: zoe_lib/exceptions.py
# class ZoeAPIException(Exception):
#     """
#     An exception generated by the API (client-side).
#     """
#     def __init__(self, message):
#         super().__init__()
#         self.message = message
# 
#     def __str__(self):
#         return repr(self.message)


from functools import wraps
from zoe_lib.version import ZOE_API_VERSION
from zoe_lib.exceptions import ZoeAPIException
import logging
import time
import requests
import requests.exceptions
            """The actual decorator."""
            mtries, mdelay = tries, delay
            while mtries > 1:
                try:
                    return func(*args, **kwargs)
                except exception_to_check as e:
                    msg = "%s, Retrying in %d seconds..." % (str(e), mdelay)
                    log.warning(msg)
                    time.sleep(mdelay)
                    mtries -= 1
                    mdelay *= backoff
            return func(*args, **kwargs)

        return f_retry  # true decorator

    return deco_retry


class ZoeAPIBase:
    """Base class for the Zoe Client API."""
    def __init__(self, url, token):
        self.url = url
        self.token = token

    @retry(ZoeAPIException)
    def _rest_get_stream(self, path):
        """
        :type path: str
        :rtype: Tuple[requests.Response, int]
        """

# Path: zoe_lib/version.py
# ZOE_API_VERSION = '0.7'
# 
# Path: zoe_lib/exceptions.py
# class ZoeAPIException(Exception):
#     """
#     An exception generated by the API (client-side).
#     """
#     def __init__(self, message):
#         super().__init__()
#         self.message = message
# 
#     def __str__(self):
#         return repr(self.message)


# Path: zoe_cmd/api_lib/api_base.py
from functools import wraps
from zoe_lib.version import ZOE_API_VERSION
from zoe_lib.exceptions import ZoeAPIException
import logging
import time
import requests
import requests.exceptions

            """The actual decorator."""
            mtries, mdelay = tries, delay
            while mtries > 1:
                try:
                    return func(*args, **kwargs)
                except exception_to_check as e:
                    msg = "%s, Retrying in %d seconds..." % (str(e), mdelay)
                    log.warning(msg)
                    time.sleep(mdelay)
                    mtries -= 1
                    mdelay *= backoff
            return func(*args, **kwargs)

        return f_retry  # true decorator

    return deco_retry


class ZoeAPIBase:
    """Base class for the Zoe Client API."""
    def __init__(self, url, token):
        self.url = url
        self.token = token

    @retry(ZoeAPIException)
    def _rest_get_stream(self, path):
        """
        :type path: str
        :rtype: Tuple[requests.Response, int]
        """

        url = self.url + '/api/' + ZOE_API_VERSION + path