SyMPC
SyMPC copied to clipboard
Type annotations for Approximations
Where?
Currently, the approximations module of SyMPC does not have type annotations. The following are the files with missing type annotations:
- [ ] exponential.py
- [ ] log.py
- [ ] reciprocal.py
- [ ] sigmoid.py
- [ ] softmax.py
- [ ] tanh.py
- [ ] utils.py
Hi I would like to contribute to this. Note that this is my first time contributing to a open source project.
Sure @rhit-namburs , go for it :+1:
@rhit-namburs are you still working on it?
Hi! I am not sure if @rhit-namburs is still working on this issue so I decided to take a look.
I noticed that softmax.py and tanh.py are already annotated, so I decided to follow their approach. However, this leads to a circular import issue:
-
sympc.tensor.mpc_tensor.py
importsAPPROXIMATIONS
fromsympc.approximations
, which includesfunc
= (sigmoid.py, log.py, exponential.py, reciprocal.py, utils.py). - softmax.py and tanh.py import
MPCTensor
from sympc.tensor to be used for the type annotations. If we do the same forfunc
we go into a loop of imports.
Without restructuring both sympc.approximations
folder and MPCTensor
class, I think the easiest way to go around this issue is to use TypeVar
from typing
to define an MPCTensor annotation. I tested and this solution passes the pre-commit tests.
Another possible solution could be to include the approximation functions defined in sympc.approximations
folder inside MPCTensor class.