I am working on an intake plugin that allows to read specific JSON files from Github. These JSON files contain basic information about systems that we want to simulate with different simulation software, each with its own input format. We have converters from JSON to each of these formats available. I would now like to add a method 'to_format' to my plugin similar to the 'to_dask' method, but I keep getting `RemoteSequenceSource object has no attribute 'to_format'. Is there a way to do this?
from latticejson.convert import to_elegant, to_madx
class RemoteLatticejson(RemoteSource):
"""
A lattice json source on the server
"""
name = 'remote-latticejson'
container = 'python'
partition_access = False
def __init__(self,org, repo, filename, parameters= None, metadata=None, **kwargs):
# super().__init__(org, repo, filename, parameters, metadata=metadata, **kwargs)
self._schema = None
self.org = org
self.repo = repo
self.filename = filename
self.metadata = metadata
self._dict = None
def _load(self):
self._dict = read_remote_file(self.org, self.repo, self.filename)
def _get_schema(self):
if self._dict is None:
self._load()
self._dtypes = {
'version': 'str',
'title': 'str',
'root': 'str',
'elements': 'dict',
'lattice': 'dict'
}
return base.Schema(
datashape=None,
dtype=self._dtypes,
shape=(None, len(self._dtypes)),
npartitions=1,
extra_metadata={}
)
def _get_partition(self, i):
if self._dict is None:
self._load_metadata()
data = [self.read()]
return [self._dict]
def read(self):
if self._dict is None:
self._load()
self.metadata = {
'version': self._dict.get('version'),
'title': self._dict.get('title'),
'root': self._dict.get('root')
}
return self._dict
def to_madx(self):
self._get_schema()
return to_madx(self._dict)
def _close(self):
pass
`