|
|
|
from abc import ABCMeta, abstractmethod
|
|
|
|
|
|
class BaseFileHandler(metaclass=ABCMeta):
|
|
|
|
|
|
|
|
|
|
str_like = True
|
|
|
|
@abstractmethod
|
|
def load_from_fileobj(self, file, **kwargs):
|
|
pass
|
|
|
|
@abstractmethod
|
|
def dump_to_fileobj(self, obj, file, **kwargs):
|
|
pass
|
|
|
|
@abstractmethod
|
|
def dump_to_str(self, obj, **kwargs):
|
|
pass
|
|
|
|
def load_from_path(self, filepath, mode='r', **kwargs):
|
|
with open(filepath, mode) as f:
|
|
return self.load_from_fileobj(f, **kwargs)
|
|
|
|
def dump_to_path(self, obj, filepath, mode='w', **kwargs):
|
|
with open(filepath, mode) as f:
|
|
self.dump_to_fileobj(obj, f, **kwargs)
|
|
|