Warning

This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.

Source code for galaxy.files.sources.googledrive

try:
    from fs.googledrivefs.googledrivefs import GoogleDriveFS
    from google.oauth2.credentials import Credentials
except ImportError:
    GoogleDriveFS = None


from typing import (
    Annotated,
    Union,
)

from pydantic import (
    AliasChoices,
    Field,
)

from galaxy.files.models import (
    BaseFileSourceConfiguration,
    BaseFileSourceTemplateConfiguration,
    FilesSourceRuntimeContext,
)
from galaxy.util.config_templates import TemplateExpansion
from ._pyfilesystem2 import PyFilesystem2FilesSource

AccessTokenField = Field(
    ...,
    validation_alias=AliasChoices("oauth2_access_token", "accessToken", "access_token"),
)


class GoogleDriveFileSourceTemplateConfiguration(BaseFileSourceTemplateConfiguration):
    access_token: Annotated[Union[str, TemplateExpansion], AccessTokenField]


class GoogleDriveFilesSourceConfiguration(BaseFileSourceConfiguration):
    access_token: Annotated[str, AccessTokenField]


[docs] class GoogleDriveFilesSource( PyFilesystem2FilesSource[GoogleDriveFileSourceTemplateConfiguration, GoogleDriveFilesSourceConfiguration] ): plugin_type = "googledrive" required_module = GoogleDriveFS required_package = "fs.googledrivefs" template_config_class = GoogleDriveFileSourceTemplateConfiguration resolved_config_class = GoogleDriveFilesSourceConfiguration def _open_fs(self, context: FilesSourceRuntimeContext[GoogleDriveFilesSourceConfiguration]): if GoogleDriveFS is None: raise self.required_package_exception credentials = Credentials(token=context.config.access_token) handle = GoogleDriveFS(credentials) return handle
__all__ = ("GoogleDriveFilesSource",)