docs: def load(self, source, filepath=None):
          """
          Load source as manifest attributes
  
          Arguments:
              source (string or file-object): CSS source to parse and serialize
                  to find metas and rules. It can be either a string or a
                  file-like object (aka with a ``read()`` method which return
                  string).
  
          Keyword Arguments:
              filepath (string): Optional filepath to memorize if source comes
                  from a file. Default is ``None`` as if source comes from a
                  string. If ``source`` argument is a file-like object, you
                  should not need to bother of this argument since filepath will
                  be filled from source ``name`` attribute.
  
          Returns:
              dict: Dictionnary of serialized rules.
          """
          # Set _path if source is a file-like object
          try:
              self._path = source.name
          except AttributeError:
              self._path = filepath
  
          # Get source content either it's a string or a file-like object
          try:
              source_content = source.read()
          except AttributeError:
              source_content = source
  
          # Parse and serialize given source
          parser = TinycssSourceParser()
          self._datas = parser.parse(source_content)
  
          serializer = ManifestSerializer()
          references = serializer.serialize(self._datas)
  
          # Copy serialized metas
          self.metas = serializer._metas
  
          # Set every enabled rule as object attribute
          for k, v in references.items():
              self.set_rule(k, v)
  
          return self._datas