code: def _make_context_immutable(context):
      
      def make_immutable(val):
          if isinstance(val, Mapping):
              return MappingProxyType(val)
          else:
              return val
  
      if not isinstance(context, (str, Mapping)):
          try:
              return tuple([make_immutable(val) for val in context])
          except TypeError:
              pass
      return make_immutable(context)
docs: Best effort attempt at turning a properly formatted context
      (either a string, dict, or array of strings and dicts) into an
      immutable data structure.
  
      If we get an array, make it immutable by creating a tuple; if we get
      a dict, copy it into a MappingProxyType. Otherwise, return as-is.