<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def cycle_lights(self, states, defaults, direction='forward', selector='all'):
 """Cycle through list of effects. Provide array states as a list of dictionaries with set_state arguments. See http://api.developer.lifx.com/docs/cycle selector: String The selector to limit which lights will run the effect. default: all states: required List of Dicts List of arguments, named as per set_state. Must have 2 to 5 entries. defaults: Object Default values to use when not specified in each states[] object. Argument names as per set_state. direction: String Direction in which to cycle through the list. Can be forward or backward default: forward """


        argument_tuples = [
            ("states", states),
            ("defaults", defaults),
            ("direction", direction)
        ]

        return self.client.perform_request(
            method='post', endpoint='lights/{}/cycle', endpoint_args=[selector],
            argument_tuples=argument_tuples, json_body=True)