# Path: conjureup/app_config.py
# class AppConfig:
#     def __setattr__(self, name, value):
#     def _internal_state_key(self):
#     def all_steps(self):
#     def has_bundle_modifications(self):
#     async def save(self):
#     async def restore(self):
# 
# Path: conjureup/consts.py
# class spell_types:
#     JUJU = 'juju'
#     SNAP = 'snap'
# 
# Path: conjureup/ui/widgets/step.py
# class StepResult(WidgetWrap):
#     def __init__(self, step):
#         self.step = step
#         self.build_widget()
#         return super().__init__(self.row)
# 
#     def build_widget(self):
#         self.icon = Text(("pending_icon", "\N{BALLOT BOX}"))
#         self.result = Text("")
#         self.row = Columns([
#             ('fixed', 3, self.icon),
#             ('weight', 0.1, Text(('body', self.step.title))),
#             ('weight', 0.4, self.result),
#         ], dividechars=1)
# 
#     def mark_running(self):
#         self.icon.set_text(("pending_icon", "\N{HOURGLASS}"))
# 
#     def mark_complete(self, result):
#         self.icon.set_text(("success_icon", "\N{BALLOT BOX WITH CHECK}"))
#         self.result.set_text(('body', result))


from ubuntui.widgets.hr import HR
from urwid import Columns, Pile, Text
from conjureup.app_config import app
from conjureup.consts import spell_types
from conjureup.ui.views.base import BaseView
from conjureup.ui.widgets.step import StepResult
        rows = [
            Columns([
                ('fixed', 3, Text('')),
                ('weight', 0.1, Text('Application')),
                ('weight', 0.4, Text('Result'))
            ], dividechars=5),
            HR(),
        ]
        for step in app.all_steps:
            if not step.has_after_deploy:
                continue
            widget = StepResult(step)
            self.widgets[step.name] = widget
            rows.extend([
                widget,
                HR(),
            ])
        self.pile = Pile(rows)
        return self.pile

    def mark_step_running(self, step):
        self.widgets[step.name].mark_running()

    def mark_step_complete(self, step):
        self.widgets[step.name].mark_complete(step.result)

    def mark_complete(self):
        app.ui.set_header(title="Post-Deploy Steps Complete",
                          excerpt="Your deployment is now complete")


# Path: conjureup/app_config.py
# class AppConfig:
#     def __setattr__(self, name, value):
#     def _internal_state_key(self):
#     def all_steps(self):
#     def has_bundle_modifications(self):
#     async def save(self):
#     async def restore(self):
# 
# Path: conjureup/consts.py
# class spell_types:
#     JUJU = 'juju'
#     SNAP = 'snap'
# 
# Path: conjureup/ui/widgets/step.py
# class StepResult(WidgetWrap):
#     def __init__(self, step):
#         self.step = step
#         self.build_widget()
#         return super().__init__(self.row)
# 
#     def build_widget(self):
#         self.icon = Text(("pending_icon", "\N{BALLOT BOX}"))
#         self.result = Text("")
#         self.row = Columns([
#             ('fixed', 3, self.icon),
#             ('weight', 0.1, Text(('body', self.step.title))),
#             ('weight', 0.4, self.result),
#         ], dividechars=1)
# 
#     def mark_running(self):
#         self.icon.set_text(("pending_icon", "\N{HOURGLASS}"))
# 
#     def mark_complete(self, result):
#         self.icon.set_text(("success_icon", "\N{BALLOT BOX WITH CHECK}"))
#         self.result.set_text(('body', result))


# Path: conjureup/ui/views/steps.py
from ubuntui.widgets.hr import HR
from urwid import Columns, Pile, Text
from conjureup.app_config import app
from conjureup.consts import spell_types
from conjureup.ui.views.base import BaseView
from conjureup.ui.widgets.step import StepResult

        rows = [
            Columns([
                ('fixed', 3, Text('')),
                ('weight', 0.1, Text('Application')),
                ('weight', 0.4, Text('Result'))
            ], dividechars=5),
            HR(),
        ]
        for step in app.all_steps:
            if not step.has_after_deploy:
                continue
            widget = StepResult(step)
            self.widgets[step.name] = widget
            rows.extend([
                widget,
                HR(),
            ])
        self.pile = Pile(rows)
        return self.pile

    def mark_step_running(self, step):
        self.widgets[step.name].mark_running()

    def mark_step_complete(self, step):
        self.widgets[step.name].mark_complete(step.result)

    def mark_complete(self):
        app.ui.set_header(title="Post-Deploy Steps Complete",
                          excerpt="Your deployment is now complete")


        if app.metadata.spell_type == spell_types.JUJU: