# Path: deckhand/common/utils.py
# LOG = logging.getLogger(__name__)
# _PATH_CACHE = dict()
# _ARRAY_RE = re.compile(r'.*\[\d+\].*')
# def to_camel_case(s):
# def to_snake_case(name):
# def _normalize_jsonpath(jsonpath):
# def _jsonpath_parse_cache(jsonpath):
# def jsonpath_parse(data, jsonpath, match_all=False):
# def _populate_data_with_attributes(jsonpath, data):
# def jsonpath_replace(data, value, jsonpath, pattern=None):
#     def _do_replace():
# def multisort(data, sort_by=None, order_by=None):
# def deepfilter(dct, **filters):
#     def _transform_filter_bool(filter_val):


import collections
import functools
import inspect
from oslo_serialization import jsonutils as json
from deckhand.common import utils
        return utils.jsonpath_parse(
            self, 'metadata.layeringDefinition.parentSelector') or {}

    @property
    def labels(self):
        return utils.jsonpath_parse(self, 'metadata.labels') or {}

    @property
    def substitutions(self):
        return utils.jsonpath_parse(self, 'metadata.substitutions') or []

    @substitutions.setter
    def substitutions(self, value):
        return utils.jsonpath_replace(self, value, 'metadata.substitutions')

    @property
    def actions(self):
        return utils.jsonpath_parse(
            self, 'metadata.layeringDefinition.actions') or []

    @property
    def storage_policy(self):
        return utils.jsonpath_parse(self, 'metadata.storagePolicy') or ''

    @property
    def is_encrypted(self):
        return self.storage_policy == 'encrypted'

    @property
    def is_replacement(self):

# Path: deckhand/common/utils.py
# LOG = logging.getLogger(__name__)
# _PATH_CACHE = dict()
# _ARRAY_RE = re.compile(r'.*\[\d+\].*')
# def to_camel_case(s):
# def to_snake_case(name):
# def _normalize_jsonpath(jsonpath):
# def _jsonpath_parse_cache(jsonpath):
# def jsonpath_parse(data, jsonpath, match_all=False):
# def _populate_data_with_attributes(jsonpath, data):
# def jsonpath_replace(data, value, jsonpath, pattern=None):
#     def _do_replace():
# def multisort(data, sort_by=None, order_by=None):
# def deepfilter(dct, **filters):
#     def _transform_filter_bool(filter_val):


# Path: deckhand/common/document.py
import collections
import functools
import inspect
from oslo_serialization import jsonutils as json
from deckhand.common import utils

        return utils.jsonpath_parse(
            self, 'metadata.layeringDefinition.parentSelector') or {}

    @property
    def labels(self):
        return utils.jsonpath_parse(self, 'metadata.labels') or {}

    @property
    def substitutions(self):
        return utils.jsonpath_parse(self, 'metadata.substitutions') or []

    @substitutions.setter
    def substitutions(self, value):
        return utils.jsonpath_replace(self, value, 'metadata.substitutions')

    @property
    def actions(self):
        return utils.jsonpath_parse(
            self, 'metadata.layeringDefinition.actions') or []

    @property
    def storage_policy(self):
        return utils.jsonpath_parse(self, 'metadata.storagePolicy') or ''

    @property
    def is_encrypted(self):
        return self.storage_policy == 'encrypted'

    @property
    def is_replacement(self):

        return utils.jsonpath_parse(self, 'metadata.replacement') is True