<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def handle_market_open(self, session_label, data_portal):
 """Handles the start of each session. Parameters session_label : Timestamp The label of the session that is about to begin. data_portal : DataPortal The current data portal. """

        ledger = self._ledger
        ledger.start_of_session(session_label)

        adjustment_reader = data_portal.adjustment_reader
        if adjustment_reader is not None:
            # this is None when running with a dataframe source
            ledger.process_dividends(
                session_label,
                self._asset_finder,
                adjustment_reader,
            )

        self._current_session = session_label

        cal = self._trading_calendar
        self._market_open, self._market_close = self._execution_open_and_close(
            cal,
            session_label,
        )

        self.start_of_session(ledger, session_label, data_portal)