Used by Variable/Connection.

https://github.com/apache/airflow/blob/894741e311ffd642e036b80d3b1b5d53c3747cad/airflow/secrets/metastore.py#L32

"""
    A JSON serializable representation of DAG.
    A stringified DAG can only be used in the scope of scheduler and webserver, because fields
    that are not serializable, such as functions and customer defined classes, are casted to
    strings.
    Compared with SimpleDAG: SerializedDAG contains all information for webserver.
    Compared with DagPickle: DagPickle contains all information for worker, but some DAGs are
    not pickle-able. SerializedDAG works for all DAGs.
    """
    _decorated_fields = {"schedule_interval", "default_args", "_access_control"}
    @staticmethod
    def __get_constructor_defaults():
        param_to_attr = {
            "max_active_tasks": "_max_active_tasks",
            "description": "_description",
            "default_view": "_default_view",
            "access_control": "_access_control",
        }
        return {
            param_to_attr.get(k, k): v.default
            for k, v in signature(DAG.__init__).parameters.items()
            if v.default is not v.empty
        }
    _CONSTRUCTOR_PARAMS = __get_constructor_defaults.__func__()  
    del __get_constructor_defaults
    _json_schema = lazy_object_proxy.Proxy(load_dag_schema)
    @classmethod
    def serialize_dag(cls, dag: DAG) -> dict: