# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3.7.3
#     language: python
#     name: python-373
# ---

# # Rope
#
# [Rope](https://github.com/python-rope/rope) ist eine Python-Refactoring-Bibliothek.

# ## Installation
#
# Rope kann einfach installiert werden mit
#
# ```console
# $pipenv install rope
# ```

# ## Nutzung
#
# Nun importieren wir zunächst den `Project`-Typ und instanziieren ihn mit dem Pfad zum Projekt:

# +
from rope.base.project import Project

proj = Project('requests')
# -

# Dies erstellt dann einen Projektordner mit dem Namen `.ropeproject` in unserem Projekt.

[f.name for f in proj.get_files()]

# Die `proj`-Variable kann eine Reihe von Befehlen ausführen wie `get_files` und `get_file`. Im folgenden Beispiel nutzen wir dies um  der Datei `api.py` die Variable `api` zuzuweisen.

# !cp requests/api.py requests/api_v1.py

api = proj.get_file('api.py')

# +
from rope.refactor.rename import Rename

change = Rename(proj, api).get_changes('api_v1')

proj.do(change)
# -

# !cd requests && git status

# !cd requests && git diff __init__.py

# Mit `proj.do(change)` ist also die Datei `requests/__init__.py` so geändert worden, dass von `new_api` anstatt von `api` importiert wird.

# Rope kann nicht nur zum Umbenennen von Dateien verwendet werden, sondern auch für hunderte anderer Fälle; siehe auch [Rope Refactorings](https://github.com/python-rope/rope/blob/master/docs/overview.rst#refactorings).

StarcoderdataJupyterScriptsDedupFiltered