davos icon indicating copy to clipboard operation
davos copied to clipboard

enable using davos.configure as a context manager

Open paxtonfitzpatrick opened this issue 2 years ago • 1 comments

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

paxtonfitzpatrick avatar Sep 25 '23 20:09 paxtonfitzpatrick

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

paxtonfitzpatrick avatar Sep 27 '23 01:09 paxtonfitzpatrick