Source code for robota_core.data_server

from datetime import datetime
from typing import Union, List

from robota_core.remote_provider import RemoteProvider, new_remote_provider
from robota_core.repository import new_repository, Repository
from robota_core.issue import new_issue_server, IssueServer
from robota_core.ci import new_ci_server, CIServer


[docs]class DataServer: """A container for data sources.""" def __init__(self, robota_config: dict, start: datetime, end: datetime): # Set up connection to student repo self.repository: Union[Repository, None] = new_repository(robota_config) self.remote_provider: Union[RemoteProvider, None] = new_remote_provider(robota_config) self.issue_server: Union[IssueServer, None] = new_issue_server(robota_config) self.ci_server: Union[CIServer, None] = new_ci_server(robota_config) self.start = start self.end = end self._valid_sources: Union[None, List[str]] = None
[docs] def get_valid_sources(self) -> List[str]: """Check whether each of the data sources has been successfully initialised.""" if self._valid_sources is not None: return self._valid_sources # Populate the valid sources list self._valid_sources = [] if self.repository: self._valid_sources.append("repository") if self.remote_provider: self._valid_sources.append("remote_provider") if self.issue_server: self._valid_sources.append("issues") if self.ci_server: self._valid_sources.append("ci") return self._valid_sources