Question: I want to rewrite parts of an opensource project. This includes renaming methods. How can I do that efficiently in emacs across the whole project?

I would rather not use hacks such as search and replace in every buffer.

Answer: 
You can use `counsel-rg` followed by `C-c C-o` to get a list of all candidates in a buffer. Press `w` to edit them with `wgrep`. I recommend `iedit` for symbol renames. Press `C-c C-c` to commit.

Dependencies:

* [ripgrep](https://github.com/BurntSushi/ripgrep)
* `counsel`, `wgrep`, `iedit` are on [MELPA](https://melpa.org)
`M-x project-find-regexp` could help, followed by typing `r` in the xref buffer.

It's not a "real" refactoring, but well along the lines of other answers here.

Or use and LSP client, such as `eglot` or `lsp-mode`, along with a suitable LSP server such as `pyls`. Those offer smarter rename operations.