Spaces:
Sleeping
Sleeping
# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/helper_utilities.ipynb. | |
# %% auto 0 | |
__all__ = ['check_is_colab', 'MultiFileChooser', 'setup_drives'] | |
# %% ../nbs/helper_utilities.ipynb 3 | |
import ipywidgets as widgets | |
from IPython.display import display, clear_output | |
from functools import partial | |
from ipyfilechooser import FileChooser | |
import os | |
# %% ../nbs/helper_utilities.ipynb 4 | |
def check_is_colab(): | |
""" | |
Check if the current environment is Google Colab. | |
""" | |
try: | |
import google.colab | |
return True | |
except: | |
return False | |
# %% ../nbs/helper_utilities.ipynb 7 | |
class MultiFileChooser: | |
def __init__(self): | |
self.fc = FileChooser('.') | |
self.fc.title = "Use the following file chooser to add each file individually.\n You can remove files by clicking the remove button." | |
self.fc.use_dir_icons = True | |
self.fc.show_only_dirs = False | |
self.selected_files = [] | |
self.fc.register_callback(self.file_selected) | |
self.output = widgets.Output() | |
def file_selected(self, chooser): | |
if self.fc.selected is not None and self.fc.selected not in self.selected_files: | |
self.selected_files.append(self.fc.selected) | |
self.update_display() | |
def update_display(self): | |
with self.output: | |
clear_output() | |
for this_file in self.selected_files: | |
remove_button = widgets.Button(description="Remove", tooltip="Remove this file") | |
remove_button.on_click(partial(self.remove_file, file=this_file)) | |
display(widgets.HBox([widgets.Label(value=this_file), remove_button])) | |
def remove_file(self, button, this_file): | |
if this_file in self.selected_files: | |
self.selected_files.remove(this_file) | |
self.update_display() | |
def display(self): | |
display(self.fc, self.output) | |
def get_selected_files(self): | |
return self.selected_files | |
# %% ../nbs/helper_utilities.ipynb 12 | |
def setup_drives(upload_set): | |
upload_set = upload_set.lower() | |
uploaded = None | |
# allow them to mount the drive if they chose Google Colab. | |
if upload_set == 'google drive': | |
if check_is_colab(): | |
from google.colab import drive | |
drive.mount('/content/drive') | |
else: | |
raise ValueError("It looks like you're not on Google Colab. Google Drive mounting is currently only implemented for Google Colab.") | |
# Everything else means that they'll need to use a file chooser (including Google Drive) | |
if check_is_colab(): | |
from google.colab import files | |
uploaded = files.upload() | |
else: | |
# Create file chooser and interact | |
mfc = MultiFileChooser() | |
mfc.display() | |
uploaded = mfc.get_selected_files() | |
return uploaded | |