<filename>fire/group.py
import fire


class IngestionStage(object):

    def run(self):
        """
        python3 group.py ingestion run
        > Ingestion!!!
        """
        return 'Ingestion!!!'


class DigestionStage(object):

    def run(self, volume=1):
        """
        python3 group.py digestion run
        > Burp!
        python3 group.py digestion run 3
        python3 group.py digestion run --volume 3
        > Burp! Burp! Burp!
        """
        return ' '.join(['Burp!'] * volume)

    def status(self):
        """
        python3 group.py digestion status
        > Satiated
        """
        return 'Satiated'


class Pipeline(object):

    def __init__(self):
        self.ingestion = IngestionStage()
        self.digestion = DigestionStage()

    def run(self):
        """
        python3 group.py run
        > Ingestion!!!Burp!Pipeline complete!
        """
        a = self.ingestion.run()
        b = self.digestion.run()
        return a + b + 'Pipeline complete!'


if __name__ == '__main__':
    fire.Fire(Pipeline)

<filename>fire/group.py
import fire


class IngestionStage(object):

    def run(self):
        """
        python3 group.py ingestion run
        > Ingestion!!!
        """
        return 'Ingestion!!!'


class DigestionStage(object):

    def run(self, volume=1):
        """
        python3 group.py digestion run
        > Burp!
        python3 group.py digestion run 3
        python3 group.py digestion run --volume 3
        > Burp! Burp! Burp!
        """
        return ' '.join(['Burp!'] * volume)

    def status(self):
        """
        python3 group.py digestion status
        > Satiated
        """
        return 'Satiated'


class Pipeline(object):

    def __init__(self):
        self.ingestion = IngestionStage()
        self.digestion = DigestionStage()

    def run(self):
        """
        python3 group.py run
        > Ingestion!!!Burp!Pipeline complete!
        """
        a = self.ingestion.run()
        b = self.digestion.run()
        return a + b + 'Pipeline complete!'


if __name__ == '__main__':
    fire.Fire(Pipeline)

python3 group.py ingestion run         > Ingestion!!! python3 group.py digestion run         > Burp!         python3 group.py digestion run 3         python3 group.py digestion run --volume 3         > Burp! Burp! Burp! python3 group.py digestion status         > Satiated python3 group.py run         > Ingestion!!!Burp!Pipeline complete!