aider is AI pair programming in your terminal https://aider.chat/
Find a file
Paul Gauthier cd2800180f Move main() function to main.py and update coder.py to call main() from main.py.
# Context:
USER: move main() to main.py
ASSISTANT: To move the `main()` function to a new file called `main.py`, you'll need to create the new file and move the `main()` function and its related imports to it. Then, you'll need to import and call the `main()` function from `main.py` in `coder.py`.

Here are the changes you need to make:

Create a new file called `main.py` and add the following content:

```python
main.py
<<<<<<< ORIGINAL
=======
import sys
import argparse
from pathlib import Path
from dotenv import load_dotenv
from coder import Coder

def main():
    load_dotenv()
    env_prefix = "CODER_"
    parser = argparse.ArgumentParser(description="Chat with GPT about code")
    parser.add_argument(
        "files",
        metavar="FILE",
        nargs="+",
        help="a list of source code files",
    )
    parser.add_argument(
        "--history-file",
        metavar="HISTORY_FILE",
        default=os.environ.get("CODER_HISTORY_FILE", ".coder.history"),
        help="Specify the history file (default: .coder.history or value from CODER_HISTORY_FILE environment variable)",
    )
    parser.add_argument(
        "--model",
        metavar="MODEL",
        default="gpt-4",
        help="Specify the model to use for the main chat (default: gpt-4)",
    )
    parser.add_argument(
        "-3",
        action="store_const",
        dest="model",
        const="gpt-3.5-turbo",
        help="Use gpt-3.5-turbo model for the main chat",
    )
    parser.add_argument(
        "-4",
        action="store_const",
        dest="model",
        const="gpt-4",
        help="Use gpt-4 model for the main chat",
    )
    parser.add_argument(
        "--no-pretty",
        action="store_false",
        dest="pretty",
        help="Disable prettyd output of GPT responses",
        default=bool(int(os.environ.get(env_prefix + "PRETTY", 1))),
    )
    parser.add_argument(
        "--apply",
        metavar="FILE",
        help="Apply the changes from the given file instead of running the chat",
    )
    parser.add_argument(
        "--commit-dirty",
        action="store_true",
        help="Commit dirty files without confirmation",
        default=bool(int(os.environ.get(env_prefix + "COMMIT_DIRTY", 0))),
    )
    args = parser.parse_args()

    fnames = args.files
    pretty = args.pretty

    coder = Coder(args.model, fnames, pretty, args.history_file)
    coder.commit(ask=not args.commit_dirty, prefix="WIP: ")

    if args.apply:
        with open(args.apply, "r") as f:
            content = f.read()
        coder.update_files(content, inp="")
        return

    coder.run()

if __name__ == "__main__":
    status = main()
    sys.exit(status)
>>>>>>> UPDATED
```

Now, update `coder.py` to remove the `main()` function and its related imports, and call the `main()` function from `main.py`:

```python
coder.py
<<<<<<< ORIGINAL
import sys
import re
import readline
import traceback
import argparse
from rich.console import Console
from rich.prompt import Confirm, Prompt
from colorama import Fore, Style
from rich.live import Live
from rich.text import Text
from rich.markdown import Markdown
from dotenv import load_dotenv

from tqdm import tqdm

from pathlib import Path
import utils

import os
import git
import openai

from dump import dump

import prompts

openai.api_key = os.getenv("OPENAI_API_KEY")
=======
import re
import readline
import traceback
from rich.console import Console
from rich.prompt import Confirm, Prompt
from colorama import Fore, Style
from rich.live import Live
from rich.text import Text
from rich.markdown import Markdown

from tqdm import tqdm

from pathlib import Path
import utils

import os
import git
import openai

from dump import dump

import prompts

openai.api_key = os.getenv("OPENAI_API_KEY")
>>>>>>> UPDATED
```

```python
coder.py
<<<<<<< ORIGINAL
def main():
    load_dotenv()
    env_prefix = "CODER_"
    parser = argparse.ArgumentParser(description="Chat with GPT about code")
    parser.add_argument(
        "files",
        metavar="FILE",
        nargs="+",
        help="a list of source code files",
    )
    parser.add_argument(
        "--history-file",
        metavar="HISTORY_FILE",
        default=os.environ.get("CODER_HISTORY_FILE", ".coder.history"),
        help="Specify the history file (default: .coder.history or value from CODER_HISTORY_FILE environment variable)",
    )
    parser.add_argument(
        "--model",
        metavar="MODEL",
        default="gpt-4",
        help="Specify the model to use for the main chat (default: gpt-4)",
    )
    parser.add_argument(
        "-3",
        action="store_const",
        dest="model",
        const="gpt-3.5-turbo",
        help="Use gpt-3.5-turbo model for the main chat",
    )
    parser.add_argument(
        "-4",
        action="store_const",
        dest="model",
        const="gpt-4",
        help="Use gpt-4 model for the main chat",
    )
    parser.add_argument(
        "--no-pretty",
        action="store_false",
        dest="pretty",
        help="Disable prettyd output of GPT responses",
        default=bool(int(os.environ.get(env_prefix + "PRETTY", 1))),
    )
    parser.add_argument(
        "--apply",
        metavar="FILE",
        help="Apply the changes from the given file instead of running the chat",
    )
    parser.add_argument(
        "--commit-dirty",
        action="store_true",
        help="Commit dirty files without confirmation",
        default=bool(int(os.environ.get(env_prefix + "COMMIT_DIRTY", 0))),
    )
    args = parser.parse_args()

    fnames = args.files
    pretty = args.pretty

    coder = Coder(args.model, fnames, pretty, args.history_file)
    coder.commit(ask=not args.commit_dirty, prefix="WIP: ")

    if args.apply:
        with open(args.apply, "r") as f:
            content = f.read()
        coder.update_files(content, inp="")
        return

    coder.run()

if __name__ == "__main__":
    status = main()
    sys.exit(status)
=======
if __name__ == "__main__":
    from main import main
    status = main()
    sys.exit(status)
>>>>>>> UPDATED
```

These changes will move the `main()` function to `main.py` and update `coder.py` to call the `main()` function from `main.py`.
2023-05-09 00:10:56 -07:00
.flake8 debug 2023-05-08 22:55:55 -07:00
.pre-commit-config.yaml added flake8 2023-05-07 22:13:57 -07:00
coder.py Move main() function to main.py and update coder.py to call main() from main.py. 2023-05-09 00:10:56 -07:00
dump.py init 2023-04-19 09:03:23 -07:00
prompts.py rename 2023-05-08 23:49:14 -07:00
utils.py Move quoted_file function from coder.py to utils.py and update get_files_content function in coder.py to use utils.quoted_file. 2023-05-09 00:00:48 -07:00