# Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # # This source code is licensed under the license found in the # LICENSE file in the root directory of this source tree. import logging from abc import ABCMeta, abstractmethod from mmengine.logging import print_log class BaseStorageBackend(metaclass=ABCMeta): """Abstract class of storage backends. All backends need to implement two apis: :meth:`get()` and :meth:`get_text()`. - :meth:`get()` reads the file as a byte stream. - :meth:`get_text()` reads the file as texts. """ # a flag to indicate whether the backend can create a symlink for a file # This attribute will be deprecated in future. _allow_symlink = False @property def allow_symlink(self): print_log( 'allow_symlink will be deprecated in future', logger='current', level=logging.WARNING) return self._allow_symlink @property def name(self): return self.__class__.__name__ @abstractmethod def get(self, filepath): pass @abstractmethod def get_text(self, filepath): pass