Update to CONTRIBUTING instructions (#34)

* style checking and formatting files

* git hook installation guide

* issue and PR templates

* minor change

*  working with github instructions

* added specific issue templates

* addressed PR comments

* addressed Chenhui's comment

* addressing chenhuis comments


Former-commit-id: d5af35d868
This commit is contained in:
vapaunic 2020-01-09 16:15:59 +00:00 коммит произвёл GitHub
Родитель 4df5b81e16
Коммит aa389234e8
9 изменённых файлов: 213 добавлений и 7 удалений

17
.flake8 Normal file
Просмотреть файл

@ -0,0 +1,17 @@
[flake8]
max-line-length = 120
max-complexity = 18
select = B,C,E,F,W,T4,B9
ignore =
# slice notation whitespace, invalid
E203
# too many leading # for block comment
E266
# module level import not at top of file
E402
# line break before binary operator
W503
# blank line contains whitespace
W293
# line too long
E501

25
.github/ISSUE_TEMPLATE.md поставляемый Normal file
Просмотреть файл

@ -0,0 +1,25 @@
### Description
<!--- Describe your issue/bug/request in detail -->
### In which platform does it happen?
<!--- Describe the platform where the issue is happening (use a list if needed) -->
<!--- For example: -->
<!--- * Azure Ubuntu Data Science Virtual Machine. -->
<!--- * Other platforms. -->
### How do we replicate the issue?
<!--- Please be specific as possible (use a list if needed). -->
<!--- For example: -->
<!--- * Create a conda environment for gpu -->
<!--- * Run unit test `test_timer.py` -->
<!--- * ... -->
### Expected behavior (i.e. solution)
<!--- For example: -->
<!--- * The tests for the timer should pass successfully. -->
### Other Comments

27
.github/ISSUE_TEMPLATE/bug_report.md поставляемый Normal file
Просмотреть файл

@ -0,0 +1,27 @@
---
name: Bug report
about: Create a report to help us improve
title: "[BUG] "
labels: 'bug'
assignees: ''
---
### Description
<!--- Describe your bug in detail -->
### How do we replicate the bug?
<!--- Please be specific as possible (use a list if needed). -->
<!--- For example: -->
<!--- * Create a conda environment for gpu -->
<!--- * Run unit test `test_timer.py` -->
<!--- * ... -->
### Expected behavior (i.e. solution)
<!--- For example: -->
<!--- * The tests for the timer should pass successfully. -->
### Other Comments

19
.github/ISSUE_TEMPLATE/feature_request.md поставляемый Normal file
Просмотреть файл

@ -0,0 +1,19 @@
---
name: Feature request
about: Suggest an idea for this project
title: "[FEATURE] "
labels: 'enhancement'
assignees: ''
---
### Description
<!--- Describe your expected feature in detail -->
### Expected behavior with the suggested feature
<!--- For example: -->
<!--- *Adding algorithm xxx will help people understand more about xxx use case scenarios. -->
### Other Comments

14
.github/ISSUE_TEMPLATE/general_ask.md поставляемый Normal file
Просмотреть файл

@ -0,0 +1,14 @@
---
name: General ask
about: Technical/non-technical asks about the repo
title: "[ASK] "
labels: ''
assignees: ''
---
### Description
<!--- Describe your general ask in detail -->
### Other Comments

15
.github/PULL_REQUEST_TEMPLATE.md поставляемый
Просмотреть файл

@ -0,0 +1,15 @@
### Description
<!--- Describe your changes in detail -->
<!--- Why is this change required? What problem does it solve? -->
### Related Issues
<!--- If it fixes an open issue, please link to the issue here. -->
### Checklist:
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
- [ ] My code follows the code style of this project, as detailed in our [contribution guidelines](../CONTRIBUTING.md).
- [ ] I have added tests.
- [ ] I have updated the documentation accordingly.

17
.pre-commit-config.yaml Normal file
Просмотреть файл

@ -0,0 +1,17 @@
repos:
- repo: https://github.com/psf/black
rev: stable
hooks:
- id: black
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v1.2.3
hooks:
- id: flake8
- repo: local
hooks:
- id: jupytext
name: jupytext
entry: jupytext --from ipynb --pipe black --check flake8
pass_filenames: true
files: .ipynb
language: python

Просмотреть файл

@ -18,21 +18,77 @@ When you submit a pull request, a CLA-bot will automatically determine whether y
Here are the basic steps to get started with your first contribution. Please reach out with any questions.
1. Use [open issues](https://github.com/Microsoft/Forecasting/issues) to discuss the proposed changes. Create an issue describing changes if necessary to collect feedback. Also, please use provided labels to tag issues so everyone can easily sort issues of interest.
2. [Fork the repo](https://help.github.com/articles/fork-a-repo/) so you can make and test local changes.
3. Create a new branch for the issue. We suggest prefixing the branch with your username and then a descriptive title: (e.g. chenhui/python_test_pipeline)
4. Create a test that replicates the issue.
3. Create a new branch for the issue. We suggest prefixing the branch with your username and then a descriptive title, e.g. chenhui/python_test_pipeline.
5. Make code changes.
6. Ensure unit tests pass and code style / formatting is consistent (see [wiki](https://github.com/Microsoft/Forecasting/wiki/Coding-Guidelines#python-and-docstrings-style) for more details).
7. Create a pull request against <b>staging</b> branch.
6. Ensure unit tests pass and code style / formatting is consistent (see [wiki](https://github.com/Microsoft/Recommenders/wiki/Coding-Guidelines#python-and-docstrings-style) for more details).
7. We use [pre-commit](https://pre-commit.com/) package to run our pre-commit hooks. We use [black](https://github.com/ambv/black) formatter and [flake8](https://pypi.org/project/flake8/) for linting on each commit. In order to set up pre-commit on your machine, follow the steps here, please note that you only need to run these steps the first time you use `pre-commit` for this project.
* Update your conda environment, `pre-commit` is part of the yaml file or just do
```
$ pip install pre-commit
```
* Set up `pre-commit` by running following command, this will put pre-commit under your .git/hooks directory.
```
$ pre-commit install
```
> Note: Git hooks to install are specified in the pre-commit configuration file `.pre-commit-config.yaml`. Settings used by `black` and `flake8` are specified in `pyproject.toml` and `.flake8` files, respectively.
* When you've made changes on local files and are ready to commit, run
```
$ git commit -m "message"
```
* Each time you commit, git will run the pre-commit hooks on any python files that are getting committed and are part of the git index. If `black` modifies/formats the file, or if `flake8` finds any linting errors, the commit will not succeed. You will need to stage the file again if `black` changed the file, or fix the issues identified by `flake8` and and stage it again.
Note: We use the staging branch to land all new features, so please remember to create the Pull Request against staging. To work with GitHub, please see the wiki for more detail about our [github rules](https://github.com/Microsoft/Forecasting/wiki/Rules-to-work-with-GitHub)
* To run pre-commit on all files just run
```
$ pre-commit run --all-files
```
8. Create a pull request (PR) against __`staging`__ branch.
We use `staging` branch to land all new features, so please remember to create the Pull Request against `staging`. To work with GitHub, please see the next section for more detail about our [working with GitHub](#working-with-github).
Once the features included in a milestone are complete we will merge `staging` into `master` branch and make a release. See the wiki for more detail about our [merge strategy](https://github.com/Microsoft/Forecasting/wiki/Strategy-to-merge-the-code-to-master-branch).
### Working with GitHub
1. All development is done in a branch off from the `staging` and named following this convention: `<user>/<topic>`.
To create a new branch, run this command:
```shell
$ git checkout -b <user>/<topic>
```
When done making the changes locally, push your branch to the server, but make sure to sync with the remote first.
```
$ git pull origin staging
$ git push origin <your branch>
```
2. To merge a new branch into the `staging` branch, please open a pull request.
3. The person who opens a PR should complete the PR, once it has been reviewed and all comments addressed.
4. We will use *Squash and Merge* when completing PRs, to maintain a clean merge history on the repo.
5. When a branch is merged into the `staging`, it must be deleted from the remote repository.
```shell
# Delete local branch
$ git branch -d <your branch>
# Delete remote branch
$ git push origin --delete <your branch>
```
Once the features included in a milestone are complete we will merge staging into master and make a release. See the wiki for more detail about our [merge strategy](https://github.com/Microsoft/Forecasting/wiki/Strategy-to-merge-the-code-to-master-branch).
## Coding Guidelines
We strive to maintain high quality code to make it easy to understand, use, and extend. We also work hard to maintain a friendly and constructive environment. We've found that having clear expectations on the development process and consistent style helps to ensure everyone can contribute and collaborate effectively.
Please review the [coding guidelines](https://github.com/Microsoft/Forecasting/wiki/Coding-Guidelines) wiki page to see more details about the expectations for development approach and style.
Please review the [coding guidelines](https://github.com/Microsoft/Recommenders/wiki/Coding-Guidelines) wiki page to see more details about the expectations for development approach and style.
## Code of Conduct

16
pyproject.toml Normal file
Просмотреть файл

@ -0,0 +1,16 @@
[tool.black]
line-length = 120
include = '\.pyi?$'
exclude = '''
/(
\.git
| \.hg
| \.mypy_cache
| \.tox
| \.venv
| _build
| buck-out
| build
| dist
)/
'''