davos
davos copied to clipboard
enable using davos.configure as a context manager
This would be really useful feature for temporarily setting config options while smuggling certain packages, and ensuring that they're reset afterward. There are even a couple use cases for it in the example code from the paper.
For example:
davos.auto_rerun = True
smuggle numpy as np # pip: numpy==1.21.6
smuggle pandas as pd # pip: pandas==1.3.5
davos.auto_rerun = False
could become:
with davos.configure(auto_rerun=True):
smuggle numpy as np # pip: numpy==1.21.6
smuggle pandas as pd # pip: pandas==1.3.5
And
davos.configure(suppress_stdout=True, noninteractive=True)
smuggle tensorflow as tf # pip: tensorflow==2.9.2
from umap smuggle UMAP # pip: umap-learn[plot,parametric_umap]==0.5.3
davos.configure(suppress_stdout=False, noninteractive=False)
could become:
with davos.configure(suppress_stdout=True, noninteractive=True):
smuggle tensorflow as tf # pip: tensorflow==2.9.2
from umap smuggle UMAP # pip: umap-learn[plot,parametric_umap]==0.5.3
It also shouldn't be too hard to implement -- I've already done close to the same thing with hypertools.set_interactive_backend
Something similar would be useful (and also easy to implement) for temporarily changing the pip executable Davos uses. E.g.,
with davos.tmp_pip_executable('/path/to/pip'):
smuggle foo