diff --git a/.github/workflows/assign.yml b/.github/workflows/assign.yml new file mode 100644 index 0000000000000..019ecfc484ca5 --- /dev/null +++ b/.github/workflows/assign.yml @@ -0,0 +1,15 @@ +name: Assign +on: + issue_comment: + types: created + +jobs: + one: + runs-on: ubuntu-latest + steps: + - name: + run: | + if [[ "${{ github.event.comment.body }}" == "take" ]]; then + echo "Assigning issue ${{ github.event.issue.number }} to ${{ github.event.comment.user.login }}" + curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -d '{"assignees": ["${{ github.event.comment.user.login }}"]}' https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/assignees + fi diff --git a/doc/source/development/contributing.rst b/doc/source/development/contributing.rst index 8fe5b174c77d3..553b167034350 100644 --- a/doc/source/development/contributing.rst +++ b/doc/source/development/contributing.rst @@ -24,6 +24,27 @@ and `good first issue where you could start out. Once you've found an interesting issue, you can return here to get your development environment setup. +When you start working on an issue, it's a good idea to assign the issue to yourself, +so nobody else duplicates the work on it. GitHub restricts assigning issues to maintainers +of the project only. In most projects, and until recently in pandas, contributors added a +comment letting others know they are working on an issue. While this is ok, you need to +check each issue individually, and it's not possible to find the unassigned ones. + +For this reason, we implemented a workaround consisting of adding a comment with the exact +text `take`. When you do it, a GitHub action will automatically assign you the issue +(this will take seconds, and may require refreshint the page to see it). +By doing this, it's possible to filter the list of issues and find only the unassigned ones. + +So, a good way to find an issue to start contributing to pandas is to check the list of +`unassigned good first issues `_ +and assign yourself one you like by writing a comment with the exact text `take`. + +If for whatever reason you are not able to continue working with the issue, please try to +unassign it, so other people know it's available again. You can check the list of +assigned issues, since people may not be working in them anymore. If you want to work on one +that is assigned, feel free to kindly ask the current assignee if you can take it +(please allow at least a week of inactivity before considering work in the issue discontinued). + Feel free to ask questions on the `mailing list `_ or on `Gitter`_.