googlecolab / colabtools

Python libraries for Google Colaboratory
Apache License 2.0
2.19k stars 720 forks source link

Add a new package, `davos`, to the set of preinstalled packages in colaboratory to help manage dependencies #4074

Open jeremymanning opened 1 year ago

jeremymanning commented 1 year ago

Is your feature request related to a problem? Please describe. I've run into several dependency-related "frustrations" when sharing colaboratory notebooks:

Describe the solution you'd like The davos package addresses these issues by providing Python notebooks with a new keyword, smuggle. The smuggle keyword works similarly to import, but with two important differences:

  1. You can smuggle a package without installing it first
  2. You can smuggle a specific version of a package

Taken together, these two enhancements to import provide a powerful system for developing and sharing reproducible code that works across different users and environments.

I suggest that including davos in the default colaboratory image could provide a useful and powerful way of managing notebook dependencies, with very low additional overhead. Calling import davos would then enable the smuggle keyword and its corresponding benefits.

Describe alternatives you've considered A more elegant (but slightly more work to implement) option would be to import davos prior to launching any new notebook. That would enable the smuggle command without needing to "manually" import davos in the first cell of a new notebook.

Additional context The davos package has many cool/useful features; additional documentation is here and a paper describing the package's scope and implementation details may be found here.

EvanWiederspan commented 1 year ago

Thanks for the recommendation, we'll look into it. Tracking internally as b/306402400

jeremymanning commented 10 months ago

Hi @EvanWiederspan I'm not sure what the status of this issue is-- but in case it's useful, there's a new paper about the davos package here: [link]