class_docstr: A dagbag is a collection of dags, parsed out of a folder tree and has high level configuration settings.
  
  Some possible setting are database to use as a backend and what executor
  to use to fire off tasks. This makes it easier to run distinct environments
  for say production and development, tests, or for different teams or security
  profiles. What would have been system level settings are now dagbag level so
  that one system can run multiple, independent settings sets.
  
  :param dag_folder: the folder to scan to find DAGs
  :param include_examples: whether to include the examples that ship
      with airflow or not
  :param read_dags_from_db: Read DAGs from DB if ``True`` is passed.
      If ``False`` DAGs are read from python files.
  :param load_op_links: Should the extra operator link be loaded via plugins when
      de-serializing the DAG? This flag is set to False in Scheduler so that Extra Operator links
      are not loaded to not run User code in Scheduler.
class_docstr_tok: ["A","dagbag","is","a","collection","of","dags",",","parsed","out","of","a","folder","tree","and","has","high","level","configuration","settings",".","Some","possible","setting","are","database","to","use","as","a","backend","and","what","executor","to","use","to","fire","off","tasks",".","This","makes","it","easier","to","run","distinct","environments","for","say","production","and","development",",","tests",",","or","for","different","teams","or","security","profiles",".","What","would","have","been","system","level","settings","are","now","dagbag","level","so","that","one","system","can","run","multiple",",","independent","settings","sets",".",":","param","dag_folder",":","the","folder","to","scan","to","find","DAGs",":","param","include_examples",":","whether","to","include","the","examples","that","ship","with","airflow","or","not",":","param","read_dags_from_db",":","Read","DAGs","from","DB","if","``","True","``","is","passed",".","If","``","False","``","DAGs","are","read","from","python","files",".",":","param","load_op_links",":","Should","the","extra","operator","link","be","loaded","via","plugins","when","de-serializing","the","DAG","?","This","flag","is","set","to","False","in","Scheduler","so","that","Extra","Operator","links","are","not","loaded","to","not","run","User","code","in","Scheduler","."]
docstr: Print a report around DagBag loading stats.
docstr_tok: ["Print","a","report","around","DagBag","loading","stats","."]
code: def dagbag_report(self):
      """Print a report around DagBag loading stats."""
      stats = self.dagbag_stats
      dag_folder = self.dag_folder
      duration = sum(
          (o.duration for o in stats), timedelta()
      ).total_seconds()
      dag_num = sum(o.dag_num for o in stats)
      task_num = sum(o.task_num for o in stats)
      table = tabulate(stats, headers="keys")
  
      report = textwrap.dedent(
          f"""\n
          -------------------------------------------------------------------
          DagBag loading stats for {dag_folder}
          -------------------------------------------------------------------
          Number of DAGs: {dag_num}
          Total task number: {task_num}
          DagBag parsing time: {duration}\n{table}
          """
      )
      return report
  
imports: from __future__ import annotations
  import hashlib
  import importlib
  import importlib.machinery
  import importlib.util
  import os
  import sys
  import textwrap
  import traceback
  import warnings
  import zipfile
  from datetime import datetime, timedelta
  from pathlib import Path
  from typing import TYPE_CHECKING, NamedTuple
  from sqlalchemy.exc import OperationalError
  from tabulate import tabulate
  from airflow import settings
  from airflow.configuration import conf
  from airflow.exceptions import AirflowClusterPolicyError, AirflowClusterPolicySkipDag, AirflowClusterPolicyViolation, AirflowDagCycleException, AirflowDagDuplicatedIdException, RemovedInAirflow3Warning
  from airflow.stats import Stats
  from airflow.utils import timezone
  from airflow.utils.dag_cycle_tester import check_cycle
  from airflow.utils.docs import get_docs_url
  from airflow.utils.file import correct_maybe_zipped, list_py_file_paths, might_contain_dag
  from airflow.utils.log.logging_mixin import LoggingMixin
  from airflow.utils.retries import MAX_DB_RETRIES, run_with_db_retries
  from airflow.utils.session import NEW_SESSION, provide_session
  from airflow.utils.timeout import timeout
  from airflow.utils.types import NOTSET
label_desc: Use image node_id 15 for calling the DagBag obj's underlying member method code with example usage: obj.dagbag_report() and returns: report