def __init__(self, alias, duration, description, flags=None, text=None):
super(Entry, self).__init__()<EOL>self._text = text<EOL>self.alias = alias<EOL>self.duration = duration<EOL>self.description = description<EOL>self.previous_entry = None<EOL>if flags is not None:<EOL><INDENT>self._flags = copy.copy(flags)<EOL><DEDENT>self._changed_attrs = set()<EOL>
`flags` must be a :class:`set` of flags (either :attr:`FLAG_IGNORED` or :attr:`FLAG_PUSHED`).

If `text` is set, it will be used as a base by the parser, with any necessary modification depending on the
attributes that have been set on the :class:`Entry`. `text` must be a tuple in the following form::

    (flags, space1, alias, space2, duration, space3, description)

Where `space1`, `space2` and `space3` are just spacing characters (this is used to preserve the number of
whitespaces when regenerating the line). For the values of `flags`, `alias`, `duration` and `description`,
refer to the :class:`~taxi.timesheet.parser.TimesheetParser` class.