Source code for graviti.manager.workspace

#!/usr/bin/env python3
#
# Copyright 2022 Graviti. Licensed under MIT License.
#

"""The implementation of the Workspace."""

from graviti.manager.dataset import DatasetManager
from graviti.manager.storage_config import StorageConfigManager
from graviti.openapi import get_current_workspace
from graviti.utility import urlnorm


[docs]class Workspace: # pylint: disable=too-many-instance-attributes """This class defines the initial client to interact between local and server. Arguments: access_key: User's access key. url: The URL of the graviti website. """ _DEFAULT_URL_CN = "https://api.graviti.cn" _DEFAULT_URL_COM = "https://api.graviti.com" def __init__( self, access_key: str, url: str = "", ) -> None: if access_key.startswith("Accesskey-"): url = url if url else Workspace._DEFAULT_URL_CN elif access_key.startswith("ACCESSKEY-"): url = url if url else Workspace._DEFAULT_URL_COM else: raise TypeError("Wrong accesskey format!") if not url.startswith("https://"): raise TypeError("Invalid url, only support url starts with 'https://'") url = urlnorm(url) self.access_key = access_key self.url = url response = get_current_workspace(access_key, url) self._id = response["id"] self.type = response["type"] self.name = response["name"] self.alias = response["alias"] self.description = response["description"] self.email = response["email"] def __repr__(self) -> str: return f'{self.__class__.__name__}("{self.name}")' @property
[docs] def datasets(self) -> DatasetManager: """Get class :class:`~graviti.manager.dataset.DatasetManager` instance. Returns: Required :class:`~graviti.manager.dataset.DatasetManager` instance. """ return DatasetManager(self)
@property
[docs] def storage_configs(self) -> StorageConfigManager: """Get class :class:`~graviti.manager.storage_config.StorageConfigManager` instance. Returns: Required :class:`~graviti.manager.storage_config.StorageConfigManager` instance. """ return StorageConfigManager(self)