<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_project(self, task, params={}, **options):
 """Adds the task to the specified project, in the optional location specified. If no location arguments are given, the task will be added to the end of the project. `addProject` can also be used to reorder a task within a project or section that already contains it. At most one of `insert_before`, `insert_after`, or `section` should be specified. Inserting into a section in an non-order-dependent way can be done by specifying `section`, otherwise, to insert within a section in a particular place, specify `insert_before` or `insert_after` and a task within the section to anchor the position of this task. Returns an empty data block. Parameters task : {Id} The task to add to a project. [data] : {Object} Data for the request - project : {Id} The project to add the task to. - [insert_after] : {Id} A task in the project to insert the task after, or `null` to insert at the beginning of the list. - [insert_before] : {Id} A task in the project to insert the task before, or `null` to insert at the end of the list. - [section] : {Id} A section in the project to insert the task into. The task will be inserted at the bottom of the section. """

        path = "/tasks/%s/addProject" % (task)
        return self.client.post(path, params, **options)