Thank you for considering contributing to the SiliconCompiler project!
- Start small, relationships need time to grow
- All new features must come with pytests
- Keep PRs short to simplify review
- Large PRs should be preceeded by discussions
- Discuss with core team before proposing core changes
- PRs should include changes only to files related to change
- Comply with coding guidelines/style of project
- Avoid style only code based PRs
Include the following information in your post:
- Describe what you expected to happen.
- Include a minimal reproducible example
- Describe what actually happened.
- Include the full traceback if there was an exception.
- List your Python and SiliconCompiler versions.
- Check if this issue is already fixed in the latest releases
If there is not an open issue for what you want to submit, prefer opening one for discussion before working on a PR. You can work on any issue that doesn't have an open PR linked to it or a maintainer assigned to it. These show up in the sidebar. No need to ask if you can work on an issue that interests you.
Include the following in your patch:
- Include tests if your patch adds or changes code.(should fail w/o patch)
- Update any relevant docs pages and docstrings.
-
Download and install git
-
Configure your git username
-
Configure your git email
$ git config --global user.name 'your name'
$ git config --global user.email 'your email'
- Make sure you have a github account
-
Fork SiliconCompiler to your GitHub account (external contributors only)
-
Clone the main repository locally.
$ git clone https://github.com/{username}/siliconcompiler
$ cd siliconcompiler
- Add fork as a remote to push your work to. (external contributors only)
$ git remote add fork https://github.com/{username}/siliconcompiler
- Create a virtualenv.
$ python3 -m venv env
$ . env/bin/activate
- Upgrade pip and setuptools.
$ python3 -m pip install --upgrade pip setuptools
- Install the development dependencies
$ python3 -m pip install -e .[test,docs]
- Create a branch to identify the issue you would like to work on.
$ git fetch origin
$ git checkout -b your-branch-name origin/main
-
Using your favorite editor, make your changes, and commit
-
Include tests that cover any code changes you make. Make sure the test fails without your patch. Run the tests as described below.
-
Push your commits to your fork on GitHub (external contributors)
$ git push --set-upstream fork your-branch-name
- Push your commits to your SiliCompiler branch on GitHub (team contributors)
$ git push -u origin your-branch-name
- Run the basic test suite with pytest.
$ pytest -m "not eda"
-
This runs the tests for the current environment, without invoking any tools.
-
Run the entire test suite with pytest. Note that this will require all tools to be installed for the tests to pass.
$ pytest
- For more information on the test suite, see tests/README.md.
- Create a pull request through github.
- Running linter on complete project
$ flake8 .
- Running linter on a specific module
$ flake8 siliconcompiler/schema.py
- Build the docs in the
docs
directory using Sphinx.
$ cd docs
$ make html
- Open
_build/html/index.html
in your browser to view the docs.
Original version based on Flask contribution guidelines