In the rare case that someone tries to pip install hypertools in an environment that doesn't have UTF-8 set as the default encoding (usually minibase Linux distros or Docker images where the language wasn't set when building), installing the dependency umap-learn will fail silently. This is due to an issue with the version of UMAP being installed -- described and fixed lmcinnes/umap#330 and Hypertools's workaround for installing a dependency from a GitHub repository.
As this won't often be an issue, we should fix it in the next release by (in order of preferability):
if a new umap-learn release (>0.3.10) is pushed to PyPI by then, remove the workaround in setup.py and include most recent umap-learn version in requirements.txt
update the workaround to install UMAP at commit hash of fix (lmcinnes/umap@224a0125cc3fac7a3720875f001ad6e25eed1cbd)
if new (stable) bug fixes or improvements are released by then, update workaround to install from more recent hash
.
.
.
Note: intentionally circumventing PyPI's requirement that packages only depend on other PyPI-hosted packages is probably not great practice. IMO it was justifiable for v0.6.0/v0.6.2 due to a substantial unreleased bug fix, and made sufficiently transparent in requirements.txt and setup.py, but in the future I think we should try to come up with a different solution. For example, we could restructure reduce.py to:
try to import UMAP only if it's passed as the reducer
if it fails, ask users whether they want to install, note the line number of the code that installs it so users can verify nothing shady is being downloaded, and prompt for input
In the rare case that someone tries to
pip install hypertools
in an environment that doesn't have UTF-8 set as the default encoding (usually minibase Linux distros or Docker images where the language wasn't set when building), installing the dependencyumap-learn
will fail silently. This is due to an issue with the version of UMAP being installed -- described and fixed lmcinnes/umap#330 and Hypertools's workaround for installing a dependency from a GitHub repository.As this won't often be an issue, we should fix it in the next release by (in order of preferability):
umap-learn
release (>0.3.10) is pushed to PyPI by then, remove the workaround insetup.py
and include most recentumap-learn
version inrequirements.txt
. . . Note: intentionally circumventing PyPI's requirement that packages only depend on other PyPI-hosted packages is probably not great practice. IMO it was justifiable for v0.6.0/v0.6.2 due to a substantial unreleased bug fix, and made sufficiently transparent in
requirements.txt
andsetup.py
, but in the future I think we should try to come up with a different solution. For example, we could restructurereduce.py
to: