Source code for dffml.util.cli.cmds

import inspect
from typing import List

from ...port import Port
from ...source.source import Sources
from ...model import Model
from ...base import config, field


from .cmd import CMD
from ...util.config.fields import FIELD_SOURCES


[docs]class ListEntrypoint(CMD): """ Subclass this with an Entrypoint to display all registered classes. """
[docs] def display(self, cls): """ Print out the loaded but uninstantiated class """ if not cls.__doc__ is None: print("%s:" % (cls.__qualname__)) print(cls.__doc__.rstrip()) else: print("%s" % (cls.__qualname__)) print()
[docs] async def run(self): """ Display all classes registered with the entrypoint """ for cls in self.ENTRYPOINT.load(): self.display(cls)
[docs]@config class SourcesCMDConfig: sources: Sources = FIELD_SOURCES
class SourcesCMD(CMD): CONFIG = SourcesCMDConfig def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # Correct type of sources list if its a list and not Sources if not isinstance(self.sources, Sources) and isinstance( self.sources, list ): self.sources = Sources(*self.sources) # Go through the list of sources and instantiate them with a config # created from loading their arguments from cmd (self). for i in range(0, len(self.sources)): if inspect.isclass(self.sources[i]): self.sources[i] = self.sources[i].withconfig(self.extra_config)
[docs]@config class ModelCMDConfig: model: Model = field( "Model used for ML", required=True, )
[docs]class ModelCMD(CMD): """ Set a models model dir. """ CONFIG = ModelCMDConfig def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) if inspect.isclass(self.model): self.model = self.model.withconfig(self.extra_config)
[docs]@config class PortCMDConfig: port: Port = field("Port")
class PortCMD(CMD): CONFIG = PortCMDConfig
[docs]@config class KeysCMDConfig: keys: List[str] = field( "Key used for source lookup and evaluation", required=True, )
class KeysCMD(CMD): CONFIG = KeysCMDConfig