code: def update(self, copy=False, **params):
          
          if copy:
              self = deepcopy(self)
  
          for k, v in params.items():
              if not hasattr(self, k):
                  if not self.unrecognized_ok:
                      raise ArgumentError.pyexc("Unknown option", k)
                  self._set_common(k, v)
  
              else:
                  setattr(self, k, v)
  
          return self
docs: Chained assignment operator.
  
          This may be used to quickly assign extra parameters to the
          :class:`Query` object.
  
          Example::
  
              q = Query(reduce=True, full_sec=True)
  
              # Someplace later
  
              v = View(design, view, query=q.update(mapkey_range=["foo"]))
  
          Its primary use is to easily modify the query object (in-place).
  
          :param boolean copy:
              If set to true, the original object is copied before new attributes
              are added to it
          :param params: Extra arguments. These must be valid query options.
  
          :return: A :class:`Query` object. If ``copy`` was set to true, this
              will be a new instance, otherwise it is the same instance on which
              this method was called