def update_filter(self, filter_id,
                      name=None, description=None,
                      jql=None, favourite=None):
        """Update a filter and return a filter Resource for it.

        :param name: name of the new filter
        :type name: Optional[str]
        :param description: useful human readable description of the new filter
        :type description: Optional[str]
        :param jql: query string that defines the filter
        :type jql: Optional[str]
        :param favourite: whether to add this filter to the current user's favorites
        :type favourite: Optional[bool]

        """
        filter = self.filter(filter_id)
        data = {}
        data['name'] = name or filter.name
        data['description'] = description or filter.description
        data['jql'] = jql or filter.jql
        data['favourite'] = favourite or filter.favourite

        url = self._get_url('filter/%s' % filter_id)
        r = self._session.put(url, headers={'content-type': 'application/json'},
                              data=json.dumps(data))

        raw_filter_json = json.loads(r.text)
        return Filter(self._options, self._session, raw=raw_filter_json)
Update a filter and return a filter Resource for it.

        :param name: name of the new filter
        :type name: Optional[str]
        :param description: useful human readable description of the new filter
        :type description: Optional[str]
        :param jql: query string that defines the filter
        :type jql: Optional[str]
        :param favourite: whether to add this filter to the current user's favorites
        :type favourite: Optional[bool]