docs: def get_marshaller_for_type(self, tp):
          """ Gets the appropriate marshaller for a type.
  
          Retrieves the marshaller, if any, that can be used to read/write
          a Python object with type 'tp'. The modules it requires, if
          available, will be loaded.
  
          Parameters
          ----------
          tp : type or str
              Python object ``type`` (which would be the class reference)
              or its string representation like ``'collections.deque'``.
  
          Returns
          -------
          marshaller : marshaller or None
              The marshaller that can read/write the type to
              file. ``None`` if no appropriate marshaller is found.
          has_required_modules : bool
              Whether the required modules for reading the type are
              present or not.
  
          See Also
          --------
          hdf5storage.Marshallers.TypeMarshaller.types
  
          """
          if not isinstance(tp, str):
              tp = tp.__module__ + '.' + tp.__name__
          if tp in self._types:
              index = self._types[tp]
          else:
              return None, False
          m = self._marshallers[index]
          if self._imported_required_modules[index]:
              return m, True
          if not self._has_required_modules[index]:
              return m, False
          success = self._import_marshaller_modules(m)
          self._has_required_modules[index] = success
          self._imported_required_modules[index] = success
          return m, success