code: def report_change(project, path, old_content):
      
      resource = path_to_resource(project, path)
      if resource is None:
          return
      for observer in list(project.observers):
          observer.resource_changed(resource)
      if project.pycore.automatic_soa:
          rope.base.pycore.perform_soa_on_changed_scopes(project, resource,
                                                         old_content)
docs: Report that the contents of file at `path` was changed
  
      The new contents of file is retrieved by reading the file.