GithubHelp home page GithubHelp logo

bugfixer's People

Contributors

hershaw avatar

Watchers

 avatar

bugfixer's Issues

Improved README

Relevant files

  • README.md
  • Dockerfile
  • action.yml
  • bugfixer.py
  • entrypoint.sh

Bug description

The README doesn't describe the project.

Proposed fix

Write two sections into the README to cover "architecture" and "deployment". Leave all other files alone.

Only append the new sections to the end of the README.

Only add new material to the README, don't change existing contents.

Fix running tests

Relevant files

  • bin/test.sh

Bug description

When run in a GitHub action, it fails with the following error:

2023-05-23T13:17:59.0697298Z Successfully built 777544ad8f23
2023-05-23T13:17:59.0720697Z Successfully tagged bugfixer:latest
2023-05-23T13:17:59.0912051Z the input device is not a TTY

Proposed fix

Make the command compatible with a device that is not a TTY

Don't include any natural language or explanation in your response. Only provide the requested and requested json output.

Print the fixed file

Relevant files

  • bugfixer.py

Bug description

In the output of the script itself, the fixed output doesn't display well in the output.

Proposed fix

On line 93 where it says print('fixing', filepath), print the fixed_contents instead of the filepath.

Add comments

Relevant files

  • bugfixer.py

Bug description

In bugfixer.py there is not enough documentation.

Proposed fix

Add short and to-the-point docstrings for each function that are compliant with PEP 257. Add typehints for the outputs of each function as well. Don't change any of the code logic, only add comments and typehints

Fix setting temperature

Relevant files

  • bugfixer.py

Bug description

temperature is only being set for one call to the llm

Proposed fix

In the constructor call to ChatOpenAI in the main function, include temperature=0

Remove the llm.temperature=0 from the fix_bugs function

better titles in PRs

Relevant files

  • README.md

Bug description

When a PR is created, The issue number and title should be used in the title of the PR.
When a branch is created by create-pull-reques action needs a better name.

Proposed fix

you can use the issue and title in the title of the PR created by peter-evans/create-pull-request@v5. using the input called title. remember that this action is run on issue creations to use the issues.event api

Update the README example to use github variables to add the issue number into the PR title via the github.event.issue in github actions.

Use the issue number to create a branch in the format of bugfixer/ using the github.event.issue in the branch parameter of create-pull-request

Write pep8 compliant code

Relevant files

  • bugfixer.py

Bug description

the script does not produce pep8 compliant code.

Proposed fix

Add to the SYSTEM_MESSAGE the requirement to produce pep8 compliant code.

Trigger workflow on creation

Relevant files

  • README.md

Bug description

The example workflow should be triggered when an issue is edited as well as when it is created.

Proposed fix

add another event in the README example. don't include anything other than JSON in your output.

Remove preamble

Relevant files

  • bugfixer.py

Bug description

Any time json.loads is called, the output of the llm sometimes contains a natural language preamble which causes the loads to fail.

Proposed fix

Add a function called strip_preamble that is called on the llm output before being passed to json.loads. This function should remove all characters until the first { which represents the start of the json output.

Remember to fix this in all places that the llm is called since there may be multiple.

Input.md permissions in tests

Relevant files

  • bin/test.sh

Bug description

When running test.sh inside of GitHub actions, it throws the following error:

/workdir/entrypoint.sh: 7: cannot create /tmp/input.md: Permission denied

Proposed fix

Fix test.sh to ensure the proper permissions are given so that /tmp/input.md can be created.

better titles for PRs

Relevant files

  • action.yml
  • .github/workflows/main.yml

Bug description

The action.yml doesn't have enough inputs and needs to be able to include the issue number in a PR.

Proposed fix

in action.yml you can add the following new inputs:

  • the issue number
  • the issue title

and in .github/workflows/main.yml you can use the issue and title in the title of the PR created by peter-evans/create-pull-request@v5. using the input called body.

Update version in example

Relevant files

  • README.md

Bug description

Outdated version number in call to hershaw/bugfix in the example in the README.

Proposed fix

In the README example call to the hershaw/bugfixer@v24 action, set the version to update it to be hershaw/bugfixer@v38.

Add missing inputs

Relevant files

  • action.yml
  • .github/workflows/main.yml

Bug description

The action.yml doesn't have enough inputs and needs to be able to include the issue number in a PR.

Proposed fix

in action.yml you can add the following new inputs:

  • the issue number
  • the issue title

and in .github/workflows/main.yml you can use the issue and title in the title of the PR created by peter-evans/create-pull-request@v5. README for peter-evans/create-pull-request@v5 is:

Create Pull Request

CI
GitHub Marketplace

A GitHub action to create a pull request for changes to your repository in the actions workspace.

Changes to a repository in the Actions workspace persist between steps in a workflow.
This action is designed to be used in conjunction with other steps that modify or add files to your repository.
The changes will be automatically committed to a new branch and a pull request created.

Create Pull Request action will:

  1. Check for repository changes in the Actions workspace. This includes:
    • untracked (new) files
    • tracked (modified) files
    • commits made during the workflow that have not been pushed
  2. Commit all changes to a new branch, or update an existing pull request branch.
  3. Create a pull request to merge the new branch into the base—the branch checked out in the workflow.

Documentation

Usage

      - uses: actions/checkout@v3

      # Make changes to pull request here

      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v5

You can also pin to a specific release version in the format @v5.x.x

Workflow permissions

For this action to work you must explicitly allow GitHub Actions to create pull requests.
This setting can be found in a repository's settings under Actions > General > Workflow permissions.

For repositories belonging to an organization, this setting can be managed by admins in organization settings under Actions > General > Workflow permissions.

Action inputs

All inputs are optional. If not set, sensible defaults will be used.

Note: If you want pull requests created by this action to trigger an on: push or on: pull_request workflow then you cannot use the default GITHUB_TOKEN. See the documentation here for workarounds.

Name Description Default
token GITHUB_TOKEN (permissions contents: write and pull-requests: write) or a repo scoped Personal Access Token (PAT). GITHUB_TOKEN
path Relative path under GITHUB_WORKSPACE to the repository. GITHUB_WORKSPACE
add-paths A comma or newline-separated list of file paths to commit. Paths should follow git's pathspec syntax. If no paths are specified, all new and modified files are added. See Add specific paths.
commit-message The message to use when committing changes. [create-pull-request] automated change
committer The committer name and email address in the format Display Name <[email protected]>. Defaults to the GitHub Actions bot user. GitHub <[email protected]>
author The author name and email address in the format Display Name <[email protected]>. Defaults to the user who triggered the workflow run. ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>
signoff Add Signed-off-by line by the committer at the end of the commit log message. false
branch The pull request branch name. create-pull-request/patch
delete-branch Delete the branch when closing pull requests, and when undeleted after merging. false
branch-suffix The branch suffix type when using the alternative branching strategy. Valid values are random, timestamp and short-commit-hash. See Alternative strategy for details.
base Sets the pull request base branch. Defaults to the branch checked out in the workflow.
push-to-fork A fork of the checked-out parent repository to which the pull request branch will be pushed. e.g. owner/repo-fork. The pull request will be created to merge the fork's branch into the parent's base. See push pull request branches to a fork for details.
title The title of the pull request. Changes by create-pull-request action
body The body of the pull request. Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action
body-path The path to a file containing the pull request body. Takes precedence over body.
labels A comma or newline-separated list of labels.
assignees A comma or newline-separated list of assignees (GitHub usernames).
reviewers A comma or newline-separated list of reviewers (GitHub usernames) to request a review from.
team-reviewers A comma or newline-separated list of GitHub teams to request a review from. Note that a repo scoped PAT, or equivalent GitHub App permissions, are required.
milestone The number of the milestone to associate this pull request with.
draft Create a draft pull request. It is not possible to change draft status after creation except through the web interface. false

For self-hosted runners behind a corporate proxy set the https_proxy environment variable.

      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v5
        env:
          https_proxy: http://<proxy_address>:<port>

Action outputs

The following outputs can be used by subsequent workflow steps.

  • pull-request-number - The pull request number.
  • pull-request-url - The URL of the pull request.
  • pull-request-operation - The pull request operation performed by the action, created, updated or closed.
  • pull-request-head-sha - The commit SHA of the pull request branch.

Step outputs can be accessed as in the following example.
Note that in order to read the step outputs the action step must have an id.

      - name: Create Pull Request
        id: cpr
        uses: peter-evans/create-pull-request@v5
      - name: Check outputs
        if: ${{ steps.cpr.outputs.pull-request-number }}
        run: |
          echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
          echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"

Action behaviour

The default behaviour of the action is to create a pull request that will be continually updated with new changes until it is merged or closed.
Changes are committed and pushed to a fixed-name branch, the name of which can be configured with the branch input.
Any subsequent changes will be committed to the same branch and reflected in the open pull request.

How the action behaves:

  • If there are changes (i.e. a diff exists with the checked-out base branch), the changes will be pushed to a new branch and a pull request created.
  • If there are no changes (i.e. no diff exists with the checked-out base branch), no pull request will be created and the action exits silently.
  • If a pull request already exists it will be updated if necessary. Local changes in the Actions workspace, or changes on the base branch, can cause an update. If no update is required the action exits silently.
  • If a pull request exists and new changes on the base branch make the pull request unnecessary (i.e. there is no longer a diff between the pull request branch and the base), the pull request is automatically closed. Additionally, if delete-branch is set to true the branch will be deleted.

For further details about how the action works and usage guidelines, see Concepts, guidelines and advanced usage.

Alternative strategy - Always create a new pull request branch

For some use cases it may be desirable to always create a new unique branch each time there are changes to be committed.
This strategy is not recommended because if not used carefully it could result in multiple pull requests being created unnecessarily. If in doubt, use the default strategy of creating an updating a fixed-name branch.

To use this strategy, set input branch-suffix with one of the following options.

  • random - Commits will be made to a branch suffixed with a random alpha-numeric string. e.g. create-pull-request/patch-6qj97jr, create-pull-request/patch-5jrjhvd

  • timestamp - Commits will be made to a branch suffixed by a timestamp. e.g. create-pull-request/patch-1569322532, create-pull-request/patch-1569322552

  • short-commit-hash - Commits will be made to a branch suffixed with the short SHA1 commit hash. e.g. create-pull-request/patch-fcdfb59, create-pull-request/patch-394710b

Controlling committed files

The action defaults to adding all new and modified files.
If there are files that should not be included in the pull request, you can use the following methods to control the committed content.

Remove files

The most straightforward way to handle unwanted files is simply to remove them in a step before the action runs.

      - run: |
          rm -rf temp-dir
          rm temp-file.txt

Ignore files

If there are files or directories you want to ignore you can simply add them to a .gitignore file at the root of your repository. The action will respect this file.

Add specific paths

You can control which files are committed with the add-paths input.
Paths should follow git's pathspec syntax.
File changes that do not match one of the paths will be stashed and restored after the action has completed.

      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v5
        with:
          add-paths: |
            *.java
            docs/*.md

Create your own commits

As well as relying on the action to handle uncommitted changes, you can additionally make your own commits before the action runs.
Note that the repository must be checked out on a branch with a remote, it won't work for events which checkout a commit.

    steps:
      - uses: actions/checkout@v3
      - name: Create commits
        run: |
          git config user.name 'Peter Evans'
          git config user.email '[email protected]'
          date +%s > report.txt
          git commit -am "Modify tracked file during workflow"
          date +%s > new-report.txt
          git add -A
          git commit -m "Add untracked file during workflow"
      - name: Uncommitted change
        run: date +%s > report.txt
      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v5

Create a project card

To create a project card for the pull request, pass the pull-request-number step output to create-or-update-project-card action.

      - name: Create Pull Request
        id: cpr
        uses: peter-evans/create-pull-request@v5

      - name: Create or Update Project Card
        if: ${{ steps.cpr.outputs.pull-request-number }}
        uses: peter-evans/create-or-update-project-card@v2
        with:
          project-name: My project
          column-name: My column
          issue-number: ${{ steps.cpr.outputs.pull-request-number }}

Auto-merge

Auto-merge can be enabled on a pull request allowing it to be automatically merged once requirements have been satisfied.
See enable-pull-request-automerge action for usage details.

Reference Example

The following workflow sets many of the action's inputs for reference purposes.
Check the defaults to avoid setting inputs unnecessarily.

See examples for more realistic use cases.

jobs:
  createPullRequest:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Make changes to pull request
        run: date +%s > report.txt

      - name: Create Pull Request
        id: cpr
        uses: peter-evans/create-pull-request@v5
        with:
          token: ${{ secrets.PAT }}
          commit-message: Update report
          committer: GitHub <[email protected]>
          author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>
          signoff: false
          branch: example-patches
          delete-branch: true
          title: '[Example] Update report'
          body: |
            Update report
            - Updated with *today's* date
            - Auto-generated by [create-pull-request][1]

            [1]: https://github.com/peter-evans/create-pull-request
          labels: |
            report
            automated pr
          assignees: peter-evans
          reviewers: peter-evans
          team-reviewers: |
            developers
            qa-team
          milestone: 1
          draft: false

An example based on the above reference configuration creates pull requests that look like this:

Pull Request Example

License

MIT

Set temperature to 0

Relevant files

  • bugfixer.py

Bug description

In bugfixer.py the temperature parameter to the llm is set too high.

Proposed fix

In bugfixer.py set the temperature to zero in the following line:

llm = ChatOpenAI(model_name=MODEL_NAME)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.