# Path: glanceclient/common/utils.py
# SENSITIVE_HEADERS = ('X-Auth-Token', )
# REQUIRED_FIELDS_ON_DATA = ('disk_format', 'container_format')
# def arg(*args, **kwargs):
#     def _decorator(func):
# def on_data_require_fields(data_fields, required=REQUIRED_FIELDS_ON_DATA):
#     def args_decorator(func):
#         def prepare_fields(fields):
#         def func_wrapper(gc, args):
# def schema_args(schema_getter, omit=None):
#     def _decorator(func):
# def pretty_choice_list(l):
# def has_version(client, version):
# def print_cached_images(cached_images):
# def print_dict_list(objects, fields):
# def print_list(objs, fields, formatters=None, field_settings=None):
# def _encode(src):
# def unicode_key_value_to_string(src):
# def print_dict(d, max_column_width=80):
# def find_resource(manager, name_or_id):
# def env(*vars, **kwargs):
# def exit(msg='', exit_code=1):
# def print_err(msg):
# def save_image(data, path):
# def make_size_human_readable(size):
# def get_file_size(file_obj):
# def get_data_file(args):
# def strip_version(endpoint):
# def print_image(image_obj, human_readable=False, max_col_width=None):
# def integrity_iter(iter, checksum):
# def serious_integrity_iter(iter, hasher, hash_value):
# def memoized_property(fn):
#     def _memoized_property(self):
# def safe_header(name, value):
# def endpoint_version_from_url(endpoint, default_version=None):
# def debug_enabled(argv):
#     def __init__(self, iterable, length):
#     def __iter__(self):
#     def next(self):
#     def __len__(self):
#     def __init__(self, wrapped):
#     def request_ids(self):
#     def wrapped(self):
#     def next(self):
#     def __init__(self, wrapped):
#     def _set_request_ids(self, resp):
#     def _next(self):
#     def next(self):
#     def __next__(self):
#     def __iter__(self):
#     def request_ids(self):
#     def wrapped(self):
# def add_req_id_to_object():
#     def inner(wrapped, instance, args, kwargs):
# def add_req_id_to_generator():
#     def inner(wrapped, instance, args, kwargs):
# def _extract_request_id(resp):
# class IterableWithLength(object):
# class RequestIdProxy(wrapt.ObjectProxy):
# class GeneratorProxy(wrapt.ObjectProxy):


import warnings
from oslo_utils import importutils
from glanceclient.common import utils
def Client(version=None, endpoint=None, session=None, *args, **kwargs):
    """Client for the OpenStack Images API.

    Generic client for the OpenStack Images API. See version classes
    for specific details.

    :param string version: The version of API to use.
    :param session: A keystoneauth1 session that should be used for transport.
    :type session: keystoneauth1.session.Session
    """
    # FIXME(jamielennox): Add a deprecation warning if no session is passed.
    # Leaving it as an option until we can ensure nothing break when we switch.
    if session:
        if endpoint:
            kwargs.setdefault('endpoint_override', endpoint)

            if not version:
                __, version = utils.strip_version(endpoint)

        if not version:
            msg = ("You must provide a client version when using session")
            raise RuntimeError(msg)

    else:
        if version is not None:
            warnings.warn(("`version` keyword is being deprecated. Please pass"
                           " the version as part of the URL. "
                           "http://$HOST:$PORT/v$VERSION_NUMBER"),
                          DeprecationWarning)


# Path: glanceclient/common/utils.py
# SENSITIVE_HEADERS = ('X-Auth-Token', )
# REQUIRED_FIELDS_ON_DATA = ('disk_format', 'container_format')
# def arg(*args, **kwargs):
#     def _decorator(func):
# def on_data_require_fields(data_fields, required=REQUIRED_FIELDS_ON_DATA):
#     def args_decorator(func):
#         def prepare_fields(fields):
#         def func_wrapper(gc, args):
# def schema_args(schema_getter, omit=None):
#     def _decorator(func):
# def pretty_choice_list(l):
# def has_version(client, version):
# def print_cached_images(cached_images):
# def print_dict_list(objects, fields):
# def print_list(objs, fields, formatters=None, field_settings=None):
# def _encode(src):
# def unicode_key_value_to_string(src):
# def print_dict(d, max_column_width=80):
# def find_resource(manager, name_or_id):
# def env(*vars, **kwargs):
# def exit(msg='', exit_code=1):
# def print_err(msg):
# def save_image(data, path):
# def make_size_human_readable(size):
# def get_file_size(file_obj):
# def get_data_file(args):
# def strip_version(endpoint):
# def print_image(image_obj, human_readable=False, max_col_width=None):
# def integrity_iter(iter, checksum):
# def serious_integrity_iter(iter, hasher, hash_value):
# def memoized_property(fn):
#     def _memoized_property(self):
# def safe_header(name, value):
# def endpoint_version_from_url(endpoint, default_version=None):
# def debug_enabled(argv):
#     def __init__(self, iterable, length):
#     def __iter__(self):
#     def next(self):
#     def __len__(self):
#     def __init__(self, wrapped):
#     def request_ids(self):
#     def wrapped(self):
#     def next(self):
#     def __init__(self, wrapped):
#     def _set_request_ids(self, resp):
#     def _next(self):
#     def next(self):
#     def __next__(self):
#     def __iter__(self):
#     def request_ids(self):
#     def wrapped(self):
# def add_req_id_to_object():
#     def inner(wrapped, instance, args, kwargs):
# def add_req_id_to_generator():
#     def inner(wrapped, instance, args, kwargs):
# def _extract_request_id(resp):
# class IterableWithLength(object):
# class RequestIdProxy(wrapt.ObjectProxy):
# class GeneratorProxy(wrapt.ObjectProxy):


# Path: glanceclient/client.py
import warnings
from oslo_utils import importutils
from glanceclient.common import utils

def Client(version=None, endpoint=None, session=None, *args, **kwargs):
    """Client for the OpenStack Images API.

    Generic client for the OpenStack Images API. See version classes
    for specific details.

    :param string version: The version of API to use.
    :param session: A keystoneauth1 session that should be used for transport.
    :type session: keystoneauth1.session.Session
    """
    # FIXME(jamielennox): Add a deprecation warning if no session is passed.
    # Leaving it as an option until we can ensure nothing break when we switch.
    if session:
        if endpoint:
            kwargs.setdefault('endpoint_override', endpoint)

            if not version:
                __, version = utils.strip_version(endpoint)

        if not version:
            msg = ("You must provide a client version when using session")
            raise RuntimeError(msg)

    else:
        if version is not None:
            warnings.warn(("`version` keyword is being deprecated. Please pass"
                           " the version as part of the URL. "
                           "http://$HOST:$PORT/v$VERSION_NUMBER"),
                          DeprecationWarning)


        endpoint, url_version = utils.strip_version(endpoint)