# Path: armet/utils/functional.py
# def compose(*functions):
# 
#     def composed(x):
#         for func in functions:
#             x = func(x)
# 
#         return x
# 
#     return composed


from armet.utils import compose
from collections import defaultdict
from functools import partial

        # Iterate and resolve each constructed getter.
        for func in self._getters[key]:
            if target is None:
                # No more getters can be resolved.
                return None

            # Resolve this getter and continue iteration.
            target = func(target)

        # Are their segments remaining to make a getter for?
        while self._segments[key]:
            if target is None:
                # No more getters can be made.
                return None

            # Fetch the next path segment.
            segment = self._segments[key].pop(0)

            # Make and append the corresponding getter.
            func = self._make_getter(segment, key)
            self._getters[key].append(func)

            # Resolve the getter.
            target = func(target)

        # Have we finished resolving the getters?
        if not self._segments[key]:
            # Compose a replacement get function that just iterates over
            # the getters.

# Path: armet/utils/functional.py
# def compose(*functions):
# 
#     def composed(x):
#         for func in functions:
#             x = func(x)
# 
#         return x
# 
#     return composed


# Path: armet/attributes/attribute.py
from armet.utils import compose
from collections import defaultdict
from functools import partial


        # Iterate and resolve each constructed getter.
        for func in self._getters[key]:
            if target is None:
                # No more getters can be resolved.
                return None

            # Resolve this getter and continue iteration.
            target = func(target)

        # Are their segments remaining to make a getter for?
        while self._segments[key]:
            if target is None:
                # No more getters can be made.
                return None

            # Fetch the next path segment.
            segment = self._segments[key].pop(0)

            # Make and append the corresponding getter.
            func = self._make_getter(segment, key)
            self._getters[key].append(func)

            # Resolve the getter.
            target = func(target)

        # Have we finished resolving the getters?
        if not self._segments[key]:
            # Compose a replacement get function that just iterates over
            # the getters.

            resolver[key] = compose(*self._getters[key])