code: def patch(self, keepNull = True, **docArgs) :
          
  
          if self.URL is None :
              raise ValueError("Cannot patch a document that was not previously saved")
  
          payload = self._store.getPatches()
          
          if self.collection._validation['on_save'] :
              self.validate()
  
          if len(payload) > 0 :
              params = dict(docArgs)
              params.update({'collection': self.collection.name, 'keepNull' : keepNull})
              payload = json.dumps(payload, default=str)
  
              r = self.connection.session.patch(self.URL, params = params, data = payload)
              data = r.json()
              if (r.status_code == 201 or r.status_code == 202) and "error" not in data :
                  self._rev = data['_rev']
              else :
                  raise UpdateError(data['errorMessage'], data)
  
              self.modified = False
  
          self._store.resetPatch()
docs: Saves the document by only updating the modified fields.
          The default behaviour concening the keepNull parameter is the opposite of ArangoDB's default, Null values won't be ignored
          Use docArgs for things such as waitForSync = True