Merge pull request #61 from AntonOsika/pre-commit-setup

Pre commit setup
This commit is contained in:
Anton Osika
2023-06-17 13:38:01 +02:00
committed by GitHub
5 changed files with 145 additions and 1 deletions

112
.github/CONTRIBUTING.md vendored Normal file
View File

@@ -0,0 +1,112 @@
# Contributing to GPT Engineer
By participating in this project, you agree to abide by the [code of conduct](CODE_OF_CONDUCT.md).
## Getting Started
To get started with contributing, please follow these steps:
1. Fork the repository and clone it to your local machine.
2. Install any necessary dependencies.
3. Create a new branch for your changes: `git checkout -b my-branch-name`.
4. Make your desired changes or additions.
5. Run the tests to ensure everything is working as expected.
6. Commit your changes: `git commit -m "Descriptive commit message"`.
7. Push to the branch: `git push origin my-branch-name`.
8. Submit a pull request to the `main` branch of the original repository.
## Code Style
Please make sure to follow the established code style guidelines for this project. Consistent code style helps maintain readability and makes it easier for others to contribute to the project.
To enforce this we use [`pre-commit`](https://pre-commit.com/) to run [`black`](https://black.readthedocs.io/en/stable/index.html) and [`ruff`](https://beta.ruff.rs/docs/) on every commit.
`pre-commit` is part of our `requirements.txt` file so you should already have it installed. If you don't, you can install the library via pip with:
```bash
$ pip install -r requirements.txt
```
And then install the `pre-commit` hooks with:
```bash
$ pre-commit install
pre-commit installed at .git/hooks/pre-commit
```
If you are not familiar with the concept of [git hooks](https://git-scm.com/docs/githooks) and/or [`pre-commit`](https://pre-commit.com/) please read the documentation to understand how they work.
As an introduction of the actual workflow, here is an example of the process you will encounter when you make a commit:
Let's add a file we have modified with some errors, see how the pre-commit hooks run `black` and fails.
`black` is set to automatically fix the issues it finds:
```bash
$ git add chat_to_files.py
$ git commit -m "commit message"
black....................................................................Failed
- hook id: black
- files were modified by this hook
reformatted chat_to_files.py
All done! ✨ 🍰 ✨
1 file reformatted.
```
You can see that `chat_to_files.py` is both staged and not staged for commit. This is because `black` has formatted it and now it is different from the version you have in your working directory. To fix this you can simply run `git add chat_to_files.py` again and now you can commit your changes.
```bash
$ git status
On branch pre-commit-setup
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: chat_to_files.py
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: chat_to_files.py
```
Now let's add the file again to include the latest commits and see how `ruff` fails.
```bash
$ git add chat_to_files.py
$ git commit -m "commit message"
black....................................................................Passed
ruff.....................................................................Failed
- hook id: ruff
- exit code: 1
- files were modified by this hook
Found 2 errors (2 fixed, 0 remaining).
```
Same as before, you can see that `chat_to_files.py` is both staged and not staged for commit. This is because `ruff` has formatted it and now it is different from the version you have in your working directory. To fix this you can simply run `git add chat_to_files.py` again and now you can commit your changes.
```bash
$ git add chat_to_files.py
$ git commit -m "commit message"
black....................................................................Passed
ruff.....................................................................Passed
fix end of files.........................................................Passed
[pre-commit-setup f00c0ce] testing
1 file changed, 1 insertion(+), 1 deletion(-)
```
Now your file has been committed and you can push your changes.
At the beggining this might seem like a tedious process (having to add the file again after `black` and `ruff` have modified it) but it is actually very useful. It allows you to see what changes `black` and `ruff` have made to your files and make sure that they are correct before you commit them.
## Issue Tracker
If you encounter any bugs, issues, or have feature requests, please [create a new issue](https://github.com/AntonOsika/gpt-engineer/issues/new) on the project's GitHub repository. Provide a clear and descriptive title along with relevant details to help us address the problem or understand your request.
## Licensing
By contributing to GPT Engineer, you agree that your contributions will be licensed under the [LICENSE](../LICENSE) file of the project.
Thank you for your interest in contributing to GPT Engineer! We appreciate your support and look forward to your contributions.

1
.gitignore vendored
View File

@@ -12,6 +12,7 @@ build/
*.egg
# Virtual environments
.env
venv/
ENV/

27
.pre-commit-config.yaml Normal file
View File

@@ -0,0 +1,27 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
fail_fast: true
repos:
- repo: https://github.com/psf/black
rev: 23.3.0
hooks:
- id: black
args: [--config, pyproject.toml]
types: [python]
exclude: .+/migrations((/.+)|(\.py))
- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: "v0.0.272"
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: check-toml
id: check-yaml
id: detect-private-key
id: end-of-file-fixer
id: trailing-whitespace

View File

@@ -1,7 +1,7 @@
# GPT Engineer
**Specify what you want it to build, the AI asks for clarification, and then builds it.**
GPT Engineer is made to be easy to adapt, extend, and make your agent learn how you want your code to look. It generates an entire codebase based on a prompt.
GPT Engineer is made to be easy to adapt, extend, and make your agent learn how you want your code to look. It generates an entire codebase based on a prompt.
## Project philosophy
- Simple to get value
@@ -44,6 +44,9 @@ Editing the identity, and evolving the main_prompt, is currently how you make th
Each step in steps.py will have its communication history with GPT4 stored in the logs folder, and can be rerun with scripts/rerun_edited_message_logs.py.
## Development/Contributing
If you want to contribute, please check out the [issues tab](https://github.com/AntonOsika/gpt-engineer/issues) in the GitHub repo and please read the [contributing document](.github/CONTRIBUTING.md) regarding some specifics on how to contribute.
## High resolution example

View File

@@ -1,4 +1,5 @@
black==23.3.0
openai==0.27.8
pre-commit==3.3.3
ruff==0.0.272
typer==0.9.0