def __init__(self, data_provider, output, set_name=None):
     self.data_provider = data_provider
     self.output = output
     self.products = self.data_provider[Data.ALL_PRODUCTS]
     self.k_engine = BaseCalculationsGroup(data_provider, output)
     self.project_name = data_provider.project_name
     self.session_uid = self.data_provider.session_uid
     self.products = self.data_provider[Data.ALL_PRODUCTS]
     self.match_product_in_scene = self.data_provider[Data.MATCHES]
     self.visit_date = self.data_provider[Data.VISIT_DATE]
     self.session_info = SessionInfo(data_provider)
     self.scif = self.data_provider[Data.SCENE_ITEM_FACTS]
     if not self.scif.empty:
         self.kpi_fetcher = CARREFOUR_ARKPIFetcher(self.project_name, self.scif, self.match_product_in_scene)
         self.store_number = self.kpi_fetcher.get_store_number()
     self.session_fk = self.data_provider[Data.SESSION_INFO]['pk'].iloc[0]
     self.set_name = set_name
     self.results_columns = ['session_id', 'product_fk', 'qty_in_store_stock', 'qty_in_dc',
                             'on_shelf', 'oos_but_in_store_stock', 'oos_but_in_dc', 'full_oos',
                             'sales_price']
     self.results = pd.DataFrame([], columns=self.results_columns)
     self.results_list = []