# Path: pyanaconda/constants.py
# ANACONDA_ENVIRON = "anaconda"
# 
# FIRSTBOOT_ENVIRON = "firstboot"


import os
import imp
import inspect
import copy
import sys
import types
import logging
from pyanaconda.constants import ANACONDA_ENVIRON, FIRSTBOOT_ENVIRON
from pykickstart.constants import FIRSTBOOT_RECONFIG
        if environment == ANACONDA_ENVIRON:
            return True
        elif environment == FIRSTBOOT_ENVIRON and data is None:
            # cannot decide, stay in the game and let another call with data
            # available (will come) decide
            return True
        elif environment == FIRSTBOOT_ENVIRON and \
                data and data.firstboot.firstboot == FIRSTBOOT_RECONFIG:
            # generally run spokes in firstboot only if doing reconfig, spokes
            # that should run even if not doing reconfig should override this
            # method
            return True
        else:
            return False


class FirstbootOnlySpokeMixIn(object):
    """This MixIn class marks Spokes as usable for Firstboot."""
    @classmethod
    def should_run(cls, environment, data):
        """This method is responsible for beginning Spoke initialization
           in the firstboot environment (even before __init__).

           It should return True if the spoke is to be shown and False
           if it should be skipped.

           It might be called multiple times, with or without (None)
           the data argument.
        """


# Path: pyanaconda/constants.py
# ANACONDA_ENVIRON = "anaconda"
# 
# FIRSTBOOT_ENVIRON = "firstboot"


# Path: pyanaconda/ui/common.py
import os
import imp
import inspect
import copy
import sys
import types
import logging
from pyanaconda.constants import ANACONDA_ENVIRON, FIRSTBOOT_ENVIRON
from pykickstart.constants import FIRSTBOOT_RECONFIG

        if environment == ANACONDA_ENVIRON:
            return True
        elif environment == FIRSTBOOT_ENVIRON and data is None:
            # cannot decide, stay in the game and let another call with data
            # available (will come) decide
            return True
        elif environment == FIRSTBOOT_ENVIRON and \
                data and data.firstboot.firstboot == FIRSTBOOT_RECONFIG:
            # generally run spokes in firstboot only if doing reconfig, spokes
            # that should run even if not doing reconfig should override this
            # method
            return True
        else:
            return False


class FirstbootOnlySpokeMixIn(object):
    """This MixIn class marks Spokes as usable for Firstboot."""
    @classmethod
    def should_run(cls, environment, data):
        """This method is responsible for beginning Spoke initialization
           in the firstboot environment (even before __init__).

           It should return True if the spoke is to be shown and False
           if it should be skipped.

           It might be called multiple times, with or without (None)
           the data argument.
        """


        if environment == FIRSTBOOT_ENVIRON: