# Path: fabricio/utils.py
# DEFAULT = object()
# def patch(obj, attr, value, default=DEFAULT, force_delete=False):
#     def __init__(self, func=None, default=None):
#     def __get__(self, instance, owner=None):
#     def __call__(self, func):
#     def make_option(self, option, value=None):
#     def make_options(self):
#     def __str__(self):
# def strtobool(value):
# def once_per_command(*args, **kwargs):  # pragma: no cover
#     def __init__(self, iterable=None, priority=None, **kwargs):
#     def items(self):
#     def __init__(self, iterable=None):
#     def __len__(self):
#     def __contains__(self, key):
#     def add(self, key):
#     def discard(self, key):
#     def __iter__(self):
#     def __reversed__(self):
#     def pop(self, last=True):
#     def __repr__(self):
#     def __eq__(self, other):
# class default_property(object):
# class Options(collections.OrderedDict):
# class AttrDict(dict):
# class PriorityDict(dict):
# class OrderedSet(collections.MutableSet):  # pragma: no cover


import json
import warnings
import docker.auth
import docker.utils
import six
import fabricio
from functools import partial
from fabricio import utils
            account=account,
            name=self.name.split('/')[-1],
        ) or self.name
        tag = _tag or tag or self.tag

        if use_digest:
            name = '{name}@{digest}'.format(name=name, digest=tag)
            tag = None

        return self.__class__(name=name, tag=tag, registry=registry)

    def get_field_name(self, owner_cls):
        field_name = self.field_names.get(owner_cls)
        if field_name is None:
            for attr in dir(owner_cls):
                if getattr(owner_cls, attr) is self:
                    if field_name is not None:
                        raise ValueError(
                            'Same instance of Image used for more than one '
                            'attribute of class {cls}'.format(
                                cls=owner_cls.__name__,
                            )
                        )
                    self.field_names[owner_cls] = field_name = attr
        return field_name

    @staticmethod
    def parse_image_name(image):
        if not image:
            return None, None, None

# Path: fabricio/utils.py
# DEFAULT = object()
# def patch(obj, attr, value, default=DEFAULT, force_delete=False):
#     def __init__(self, func=None, default=None):
#     def __get__(self, instance, owner=None):
#     def __call__(self, func):
#     def make_option(self, option, value=None):
#     def make_options(self):
#     def __str__(self):
# def strtobool(value):
# def once_per_command(*args, **kwargs):  # pragma: no cover
#     def __init__(self, iterable=None, priority=None, **kwargs):
#     def items(self):
#     def __init__(self, iterable=None):
#     def __len__(self):
#     def __contains__(self, key):
#     def add(self, key):
#     def discard(self, key):
#     def __iter__(self):
#     def __reversed__(self):
#     def pop(self, last=True):
#     def __repr__(self):
#     def __eq__(self, other):
# class default_property(object):
# class Options(collections.OrderedDict):
# class AttrDict(dict):
# class PriorityDict(dict):
# class OrderedSet(collections.MutableSet):  # pragma: no cover


# Path: fabricio/docker/image.py
import json
import warnings
import docker.auth
import docker.utils
import six
import fabricio
from functools import partial
from fabricio import utils

            account=account,
            name=self.name.split('/')[-1],
        ) or self.name
        tag = _tag or tag or self.tag

        if use_digest:
            name = '{name}@{digest}'.format(name=name, digest=tag)
            tag = None

        return self.__class__(name=name, tag=tag, registry=registry)

    def get_field_name(self, owner_cls):
        field_name = self.field_names.get(owner_cls)
        if field_name is None:
            for attr in dir(owner_cls):
                if getattr(owner_cls, attr) is self:
                    if field_name is not None:
                        raise ValueError(
                            'Same instance of Image used for more than one '
                            'attribute of class {cls}'.format(
                                cls=owner_cls.__name__,
                            )
                        )
                    self.field_names[owner_cls] = field_name = attr
        return field_name

    @staticmethod
    def parse_image_name(image):
        if not image:
            return None, None, None

        repository, tag = docker.utils.parse_repository_tag(image)