<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def distinct(table, key=None, count=None, presorted=False, buffersize=None, tempdir=None, cache=True):
 """ Return only distinct rows in the table. If the `count` argument is not None, it will be used as the name for an additional field, and the values of the field will be the number of duplicate rows. If the `key` keyword argument is passed, the comparison is done on the given key instead of the full row. See also :func:`petl.transform.dedup.duplicates`, :func:`petl.transform.dedup.unique`, :func:`petl.transform.reductions.groupselectfirst`, :func:`petl.transform.reductions.groupselectlast`. """


    return DistinctView(table, key=key, count=count, presorted=presorted,
                        buffersize=buffersize, tempdir=tempdir, cache=cache)