You can clone with
When Rope is not available, refactoring.Refactor uses a StringIO instance for self.resource. Later, though, self.resource.real_path is used, which fails.
refactoring: Provide our own implementation of a resource.
This used to use a StringIO instance in case Rope was unavailable,
but that did not provide all the interface we needed. Implement our
own version so we can easily provide all APIs as needed.