kaanaksit / odak

Scientific computing library for optics, computer graphics and visual perception.
https://kaanaksit.com/odak
Mozilla Public License 2.0
176 stars 52 forks source link

Thinning the dependencies #25

Closed kaanaksit closed 1 year ago

kaanaksit commented 3 years ago

I want to drop dependencies as much as possible. The current list of dependencies can be found in here. This issue will track the progress towards dropping dependencies.

kaanaksit commented 3 years ago

To remove scipy from requirements.txt: https://github.com/kunguz/odak/blob/d3ac9c90a4769b537729a38e061ae2c666ee4f6f/requirements.txt#L6

All needed is to replace this line: https://github.com/kunguz/odak/blob/e8de761740c73093789e7f721b282fdcd0940703/odak/tools/file.py#L13

oliland commented 3 years ago

We should also drop requirements.txt and specify loose requirements like torch in install_requires. See

https://packaging.python.org/discussions/install-requires-vs-requirements/

tl;dr: applications should pin packages explicitly in requirements.txt, libraries should specify loose requirements in setup.py/install_requires.

kaanaksit commented 3 years ago

In the current setup.py, install_requires is deeply connected to requirements.txt: https://github.com/kunguz/odak/blob/c626d4024a314780a62cb71218e534d2a3ce7519/setup.py#L7-L12

At the bare minimum, torch and numpy are everything odak needs truly. These two dependencies can be the most abstract ones. My fear in keeping an abstract install_requires lies in the fact that a user may want to use these other definitions that rely on the missing dependencies and can easily conclude things not working. Given that the user base of odak is/will be a diverse set of people, they may not have the experience to judge and conclude, Oh, this is a missing dependency issue, let me pip super quick.

kaanaksit commented 3 years ago

requirements.txt is also used by GitHub to map dependencies across repositories. Their statistics on dependencies and dependents or things like used by feature require requirements.txt to be available at a repository.

image

kaanaksit commented 3 years ago

8f24ef2f707cf00f71c0327ccd87e4c93d19926c Removes scipy from dependencies. In the next release, 0.2.0, pip version won't be needing scipy.

36c49d159cab382a8f4c4c16346c3cd6fd5c3e00 Removes finufft from dependencies. In the next release, 0.2.0, pip version won't be needing finufft.

add3bab533714053a448e9eff08f1aeb4b71f869 Removes plotly and kaleido from dependencies. In the next release, 0.2.0, pip version won't be needing plotly and kaleido.

efd9286a2cbdc8762f0ff7d67f94d52463b8c2b3 Removes dispy from dependencies. In the next release, 0.2.0, pip version won't be needing dispy.

Latest state of the requirements.txt: https://github.com/kunguz/odak/blob/efd9286a2cbdc8762f0ff7d67f94d52463b8c2b3/requirements.txt#L1-L5