class_docstr: This class redacts sensitive data similar to SecretsMasker in Airflow logs.
  
  The difference is that our default max recursion depth is way higher - due to
  the structure of OL events we need more depth.
  Additionally, we allow data structures to specify data that needs not to be
  redacted by specifying _skip_redact list by deriving RedactMixin.
code: def from_masker(cls, other: SecretsMasker) -> OpenLineageRedactor:
      instance = cls()
      instance.patterns = other.patterns
      instance.replacer = other.replacer
      return instance
  
imports: from __future__ import annotations
  import datetime
  import json
  import logging
  import os
  from contextlib import suppress
  from functools import wraps
  from typing import TYPE_CHECKING, Any, Iterable
  from urllib.parse import parse_qsl, urlencode, urlparse, urlunparse
  import attrs
  from attrs import asdict
  from openlineage.client.utils import RedactMixin
  from airflow.compat.functools import cache
  from airflow.configuration import conf
  from airflow.providers.openlineage.plugins.facets import AirflowMappedTaskRunFacet, AirflowRunFacet
  from airflow.utils.context import AirflowContextDeprecationWarning
  from airflow.utils.log.secrets_masker import Redactable, Redacted, SecretsMasker, should_hide_value_for_key
label_desc: Use image node_id 1 for calling the OpenLineageRedactor obj's underlying member method code with example usage: obj.from_masker(cls, other) and returns: instance