If you are interested in contributing to PyTorch Frame, your contributions will likely fall into one of the following two categories:
- You want to implement a new feature:
- In general, we accept any features as long as they fit the scope of this package. If you are unsure about this or need help on the design/implementation of your feature, post about it in an issue.
- You want to fix a bug:
- Feel free to send a Pull Request (PR) any time you encounter a bug. Please provide a clear and concise description of what the bug was. If you are unsure about if this is a bug at all or how to fix, post about it in an issue.
Once you finish implementing a feature or bug-fix, please send a PR to https://github.com/pyg-team/pytorch-frame.
Your PR will be merged after one or more rounds of reviews by the pyg-team.
To develop PyTorch Frame on your machine, here are some tips:
-
Ensure that you are running on one of the supported PyTorch versions (e.g.,
2.1.0
):import torch print(torch.__version__)
-
Uninstall all existing PyTorch Frame installations. It is advised to run this command repeatedly to confirm that installations across all locations are properly removed.
pip uninstall pytorch-frame
-
Fork and clone the PyTorch Frame repository:
git clone https://github.com/<your_username>/pytorch-frame.git cd pytorch-frame
-
If you already cloned PyTorch Frame from source, update it:
git pull
-
Install PyTorch Frame in editable mode:
pip install -e ".[dev,full]"
This mode will symlink the Python files from the current local source tree into the Python install. Hence, if you modify a Python file, you do not need to re-install PyTorch Frame again.
-
Ensure that you have a working PyTorch Frame installation by running the entire test suite with
pytest
-
Install pre-commit hooks:
pre-commit install
The PyTorch Frame testing suite is located under test/
.
Run the test suite with
# all test cases
pytest
# individual test cases
pytest test/utils/test_split.py
PyTorch Frame uses GitHub Actions in combination with CodeCov for continuous integration.
Everytime you send a Pull Request, your commit will be built and checked against the PyTorch Frame guidelines:
-
Ensure that your code is formatted correctly by testing against the styleguide of
flake8
. We use theFlake8-pyproject
plugin for configuration:flake8
If you do not want to format your code manually, we recommend to use
yapf
. -
Ensure that the entire test suite passes and that code coverage roughly stays the same. Please feel encouraged to provide a test with your submitted code. To test, either run
pytest --cov
(which runs a set of additional but time-consuming tests) dependening on your needs.
-
Add your feature/bugfix to the
CHANGELOG.md
. If multiple PRs move towards integrating a single feature, it is advised to group them together into one bullet point.
To build the documentation:
- Build and install PyTorch Frame from source.
- Install Sphinx theme via
pip install git+https://github.com/pyg-team/pyg_sphinx_theme.git
- Generate the documentation via:
cd docs make html