Source code for PyOpenWorm.data_trans.local_file_ds
from os.path import join
from contextlib import contextmanager
from rdflib.namespace import Namespace
from ..datasource import Informational
from .file_ds import FileDataSource
from .common_data import DS_NS
from ..capability import Capable, NoProviderGiven
from ..capabilities import FilePathCapability
[docs]class LocalFileDataSource(Capable, FileDataSource):
'''
File paths should be relative -- in general, path names on a given machine are not portable
'''
rdf_namespace = Namespace(DS_NS['LocalFileDataSource#'])
file_name = Informational(display_name='File name')
torrent_file_name = Informational(display_name='Torrent file name')
needed_capabilities = [FilePathCapability()]
def __init__(self, *args, **kwargs):
super(LocalFileDataSource, self).__init__(*args, **kwargs)
self._base_path_provider = None
def file_contents(self):
if not self._base_path_provider:
raise NoProviderGiven()
return open(self.full_path(), 'b')
def full_path(self):
return join(self.basedir(), self.file_name.one())
[docs] def accept_capability_provider(self, cap, provider):
self._base_path_provider = provider
def basedir(self):
return self._base_path_provider.file_path()
__yarom_mapped_classes__ = (LocalFileDataSource,)