self.schedule_interval = self.timetable.summary
        else:
            if isinstance(schedule_interval, ArgNotSet):
                schedule_interval = DEFAULT_SCHEDULE_INTERVAL
            self.schedule_interval = schedule_interval
            self.timetable = create_timetable(schedule_interval, self.timezone)
        if isinstance(template_searchpath, str):
            template_searchpath = [template_searchpath]
        self.template_searchpath = template_searchpath
        self.template_undefined = template_undefined
        self.last_loaded = timezone.utcnow()
        self.safe_dag_id = dag_id.replace(".", "__dot__")
        self.max_active_runs = max_active_runs
        if self.timetable.active_runs_limit is not None:
            if self.timetable.active_runs_limit < self.max_active_runs:
                raise AirflowException(
                    f"Invalid max_active_runs: {type(self.timetable)} "
                    f"requires max_active_runs <= {self.timetable.active_runs_limit}"
                )
        self.dagrun_timeout = dagrun_timeout
        self.sla_miss_callback = sla_miss_callback
        if default_view in DEFAULT_VIEW_PRESETS:
            self._default_view: str = default_view
        elif default_view == "tree":
            warnings.warn(
                "`default_view` of 'tree' has been renamed to 'grid' -- please update your DAG",
                RemovedInAirflow3Warning,
                stacklevel=2,
            )
            self._default_view = "grid"