
Instructions for editing files.
# Example
## Input file
```
import numpy as np
from impls import impl1, impl2

def hello():
    "print a greeting"

    print("hello")

def call_hello():
    "call hello"

    hello()
    print("Called")
    impl1()
    hello()
    impl2()

```
## Edit format on the input file
```
<<<<<<< SEARCH
from impls import impl1, impl2
=======
from impls import impl1, impl2
from hello import hello as hello_renamed
>>>>>>> REPLACE
<<<<<<< SEARCH
def hello():
    "print a greeting"

    print("hello")
=======
>>>>>>> REPLACE
<<<<<<< SEARCH
def call_hello():
    "call hello"

    hello()
=======
def call_hello_renamed():
    "call hello renamed"

    hello_renamed()
>>>>>>> REPLACE
<<<<<<< SEARCH
    impl1()
    hello()
    impl2()
=======
    impl1()
    hello_renamed()
    impl2()
>>>>>>> REPLACE
```

# *SEARCH/REPLACE block* Rules:

- Every "SEARCH" section must *EXACTLY MATCH* the existing file content, character for character, including all comments, docstrings, whitespaces, etc.
- In a single call the edit blocks should be constructed from top to bottom of the file in a sequence. 
- An edit block can't edit over a previous edit in the same tool call.
- Including multiple unique *SEARCH/REPLACE* blocks if needed.
- Include enough and only enough lines in each SEARCH section to uniquely match each set of lines that need to change.
- Keep *SEARCH/REPLACE* blocks concise.
- Break large *SEARCH/REPLACE* blocks into a series of smaller blocks that each change a small portion of the file.
- Include just the changing lines, and a few surrounding lines (0-3 lines) if needed for uniqueness.
- Other than for uniqueness, avoid including those lines which do not change in search (and replace) blocks. Target 0-3 non trivial extra lines per block.
- Preserve leading spaces and indentations in both SEARCH and REPLACE blocks.