docs: 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)