import os, sys, importlib, glob, inspect, itertools

from ffx.track_type import TrackType

from ffx.track_descriptor import TrackDescriptor
from ffx.media_descriptor import MediaDescriptor

from .basename_combinator import BasenameCombinator

from .indicator_combinator import IndicatorCombinator
from .label_combinator import LabelCombinator

class BasenameCombinator2(BasenameCombinator):
    """documentation_site"""

    VARIANT = 'B2'

    # def __init__(self, SubCombinators: dict = {}, context = None):
    def __init__(self, context = None):

        self._context = context
        self._logger = context['logger']
        self._reportLogger = context['report_logger']

    def getVariant(self):
        return BasenameCombinator2.VARIANT

    def getPayload(self):
        return ''

    def assertFunc(self, mediaDescriptor: MediaDescriptor):
        pass

    def shouldFail(self):
        return False

    def getYield(self):

        for L in LabelCombinator.getAllClassReferences():
#            for I in IndicatorCombinator.getAllClassReferences():
#                for S in SiteCombinator.getAllClassReferences():
#                    for T in TitleCombinator.getAllClassReferences():
#

            l = L(self._context)

            yieldObj = {}

            yieldObj['identifier'] = self.getIdentifier()

            yieldObj['variants'] = [self.getVariant(),
                                    l.getVariant()]

            yieldObj['payload'] = {'label': l.getPayload()}

            yieldObj['assertSelectors'] = ['B', 'L']

            yieldObj['assertFuncs'] = [self.assertFunc,
                                        l.assertFunc]

            yieldObj['shouldFail'] = (self.shouldFail()
                                        | l.shouldFail())

            yield yieldObj