-
Notifications
You must be signed in to change notification settings - Fork 8
Description
Something that could be worth adding is an option (disabled by default) to treat a Davos project more like a "complete" virtual environment -- i.e., include & provide all required packages on its own, rather than supplementing the user’s existing environment.
Currently, Davos projects don’t duplicate any dependencies already satisfied by the user’s environment. This makes them more efficient, and there’s few if any downsides to doing it this way. But I can imagine some users might want the alternate behavior in some cases, and right now the only way to achieve this would be to add --ignore-installed to the onion comment for every smuggle statement (which would then have to be removed after the first run, otherwise the smuggle statements would install all packages every time).
My gut feeling is this might work better as a flag attached to the Project object itself rather than davos.config/the top-level davos module -- e.g., davos.project.complete = True. Then the behavior would be linked to the project even if it were re-used across multiple notebooks, we'd avoid ambiguity about what happens if you enable the option then change which project you're using, and it could be a constructor argument so you don't have to set it every time, e.g., davos.project = Project('my-project', complete=True)