code: def dirty_ops(self, instance):
          ''' Returns a dict of the operations needed to update this object.
              See :func:`Document.get_dirty_ops` for more details.'''
          obj_value = instance._values[self._name]
          if not obj_value.set:
              return {}
  
          if not obj_value.dirty and self.__type.config_extra_fields != 'ignore':
              return {}
  
          ops = obj_value.value.get_dirty_ops()
  
          ret = {}
          for op, values in ops.items():
              ret[op] = {}
              for key, value in values.items():
                  name = '%s.%s' % (self._name, key)
                  ret[op][name] = value
          return ref dirty_ops(self, instance):
          ''' Returns a dict of the operations needed to update this object.
              See :func:`Document.get_dirty_ops` for more details.'''
          obj_value = instance._values[self._name]
          if not obj_value.set:
              return {}
  
          if not obj_value.dirty and self.__type.config_extra_fields != 'ignore':
              return {}
  
          ops = obj_value.value.get_dirty_ops()
  
          ret = {}
          for op, values in ops.items():
              ret[op] = {}
              for key, value in values.items():
                  name = '%s.%s' % (self._name, key)
                  ret[op][name] = value
          return ret
docs: Returns a dict of the operations needed to update this object.
              See :func:`Document.get_dirty_ops` for more details.