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.pyimportsAPPROXIMATIONSfromsympc.approximations, which includesfunc= (sigmoid.py, log.py, exponential.py, reciprocal.py, utils.py). - softmax.py and tanh.py import
MPCTensorfrom sympc.tensor to be used for the type annotations. If we do the same forfuncwe 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.