<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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