Spaces:
Runtime error
Runtime error
| # Contributing to the xFormers repo | |
| We want to make contributing to this project as easy and transparent as | |
| possible. | |
| ## Our Development Process | |
| Minor changes and improvements will be released on an ongoing basis. Larger | |
| changes (e.g., changesets implementing a new paper) will be released on a | |
| more periodic basis. | |
| ## Pull Requests | |
| We actively welcome your pull requests. | |
| 1. Fork the repo and create your branch from `main`. | |
| 2. If you've added code that should be tested, add tests. | |
| 3. If you've changed APIs, update the documentation. | |
| 4. Ensure the test suite passes. | |
| 5. Make sure your code lints. | |
| 6. If you haven't already, complete the Contributor License Agreement ("CLA"). | |
| ## Contributor License Agreement ("CLA") | |
| In order to accept your pull request, we need you to submit a CLA. You only need | |
| to do this once to work on any of Facebook's open source projects. | |
| Complete your CLA here: <https://code.facebook.com/cla> | |
| ## Issues | |
| We use GitHub issues to track public bugs. Please ensure your description is | |
| clear and has sufficient instructions to be able to reproduce the issue. | |
| Facebook has a [bounty program](https://www.facebook.com/whitehat/) for the safe | |
| disclosure of security bugs. In those cases, please go through the process | |
| outlined on that page and do not file a public issue. | |
| ## Environment setup | |
| ```bash | |
| ~$ python3 -m venv venv2 | |
| ~$ source venv2/bin/activate | |
| (venv2) ~$ cd git/template/ | |
| (venv2) ~/git/template $ pip3 install -r requirements-test.txt | |
| ``` | |
| ## Coding Style | |
| In your editor, install the [editorconfig](https://editorconfig.org/) extension | |
| which should ensure that you are following the same standards as us. | |
| Two options to make sure that the code is formatted and linted properly: | |
| * either you run black, mypy and isort before opening up your PR. | |
| ```bash | |
| black . | |
| isort . --profile black | |
| flake8 --config .flake8 | |
| mypy --ignore-missing-imports --scripts-are-modules --pretty --exclude build/ --exclude stubs/ . | |
| ``` | |
| * or you can just install [pre-commit](https://pre-commit.com/), which will make sure that all of the above is run automatically anytime you commit | |
| in that case, you would need to | |
| ```bash | |
| pip install pre-commit | |
| ``` | |
| then (in the xformers repository, just once) | |
| ```bash | |
| pre-commit install | |
| ``` | |
| After these steps each of your commits will run the same linting and formatting routines as the xformers continuous integration, which greatly helps getting your PRs all green ! | |
| _Read the [editorconfig](.editorconfig) file to understand the exact coding style preferences._ | |
| ## Testing | |
| ### Static analysis | |
| ```bash | |
| mypy --ignore-missing-imports --scripts-are-modules --pretty --exclude stubs/ . | |
| ``` | |
| ### Unit tests | |
| ```bash | |
| pytest | |
| ``` | |
| or | |
| ``` bash | |
| python -m pytest | |
| ``` | |
| ### Check test coverage | |
| ``` bash | |
| python -m pytest --cov-report term --cov=template tests | |
| ``` | |
| ### CircleCI status | |
| From your PR page, you can expand on the CircleCI results. For GPU test, you should see | |
| what CI has run, like: | |
| ``` bash | |
| ... | |
| ----- generated xml file: /home/circleci/template/test-results/junit.xml ------ | |
| ================== 217 passed, 2 xfailed in 218.74s (0:03:38) ================== | |
| CircleCI received exit code 0 | |
| ``` | |
| The number of passed and failed should give you an idea on whether your local | |
| test was the same or not. | |
| ## Commit Guidelines | |
| We follow the same guidelines as AngularJS. Each commit message consists of a **header**, | |
| a **body** and a **footer**. The header has a special format that includes a **type**, | |
| and a **subject**: | |
| ```bash | |
| [<type>] <subject> | |
| <BLANK LINE> | |
| <body> | |
| <BLANK LINE> | |
| <footer> | |
| ``` | |
| Any line of the commit message cannot be longer 100 characters! This allows the message to be easier | |
| to read on github as well as in various git tools. | |
| ### Type | |
| Must be one of the following: | |
| * **feat**: A new feature | |
| * **fix**: A bug fix | |
| * **cleanup**: Changes that do not affect the meaning of the code (white-space, formatting, missing | |
| semi-colons, dead code removal etc.) | |
| * **refactor**: A code change that neither fixes a bug or adds a feature | |
| * **perf**: A code change that improves performance | |
| * **test**: Adding missing tests or fixing them | |
| * **chore**: Changes to the build process or auxiliary tools and libraries such as documentation | |
| generation | |
| * **docs**: Documentation only changes | |
| ## License | |
| By contributing to *xFormers*, you agree that your contributions will be licensed | |
| under the LICENSE file in the root directory of this source tree. | |