The following is only necessary if you want to contribute features or adversarial attacks to Foolbox. As a user of Foolbox, you can just do a normal installation.
First clone the repsository using
git clone https://github.com/bethgelab/foolbox
You can then do an editable installation using
cd foolbox pip3 install -e .
Create a new branch for each new feature or contribution. This will be necessary to open a pull request later.
# Coding Style
We follow the PEP 8 Style Guide for Python Code (opens new window). We use black (opens new window) for automatic code formatting. In addition, we use flake8 (opens new window) to detect certain PEP 8 violations.
Have a look at the
Makefile. It contains many useful commands, e.g.
make black or
# Type annotions and MyPy
Foolbox uses Python type annotations introduced in PEP 484 (opens new window). We use mypy (opens new window) for static type checking with relatively strict settings. All code in Foolbox has to be type annotated.
We recommend to run MyPy or a comparable type checker automatically in your editor (e.g. VIM) or IDE (e.g. PyCharm). You can also run MyPy from the command line:
make mypy # run this in the root folder that contains the Makefile
__init__ methods in Foolbox should not have return type annotations unless
they have no type annotated arguments (i.e. only
self), in which case
the return type of
__init__ should be specifed as
# Creating a pull request on GitHub
First, fork the Foolbox repository on GitHub (opens new window). Then, add the fork to your local GitHub repository:
git remote add fork https://github.com/YOUR USERNAME/foolbox
Finally, push your new branch to GitHub and open a pull request.