<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def copy(self, name=None):
 r""" Creates a deep copy of the current project A deep copy means that new, unique versions of all the objects are created but with identical data and properties. Parameters name : string The name to give to the new project. If not supplied, a name is automatically generated. Returns ------- A new Project object containing copies of all objects """

        if name is None:
            name = ws._gen_name()
        proj = deepcopy(self)
        ws[name] = proj
        return proj