code: def get_type_string(self, data, type_string):
          
          if type_string is not None:
              return type_string
          else:
              tp = type(data)
              try:
                  return self.type_to_typestring[tp]
              except KeyError:
                  return self.type_to_typestring[tp.__module__ + '.'
                                                 + tp.__name__]
docs: Gets type string.
  
          Finds the type string for 'data' contained in
          ``python_type_strings`` using its ``type``. Non-``None``
          'type_string` overrides whatever type string is looked up.
          The override makes it easier for subclasses to convert something
          that the parent marshaller can write to disk but still put the
          right type string in place).
  
          Parameters
          ----------
          data : type to be marshalled
              The Python object that is being written to disk.
          type_string : str or None
              If it is a ``str``, it overrides any looked up type
              string. ``None`` means don't override.
  
          Returns
          -------
          str
              The type string associated with 'data'. Will be
              'type_string' if it is not ``None``.
  
          Notes
          -----
          Subclasses probably do not need to override this method.