25
loading...
This website collects cookies to deliver better user experience
This is Day 13 of the #100DaysOfPython challenge.
python-fire
that will be used today.cli.py
for the project folder should look like the following:#!/usr/bin/env python
import fire
from PyInquirer import prompt
import pretty_errors
class IngestionStage(object):
def run(self):
return 'Ingesting! Nom nom nom...'
class DigestionStage(object):
def __init__(self):
self.satiated = False
def run(self, volume: int) -> str:
questions = [
{
'type': 'input',
'name': 'volume',
'message': 'How many burps?',
}
]
if volume == 0:
volume = int(prompt(questions)['volume'])
self.satiated = True
return ' '.join(['Burp!'] * volume)
def breakfast(self):
questions = [
{
'type': 'list',
'name': 'breakfast',
'message': 'What did you want for breakfast?',
'choices': ['eggs', 'bacon', 'toast']
}
]
switcher = {
'eggs': 1,
'bacon': 2,
'toast': 3,
}
volume = switcher.get(prompt(questions)['breakfast'], 0)
self.satiated = True
return ' '.join(['Burp!'] * volume)
def status(self):
return 'Satiated.' if self.satiated else 'Not satiated.'
class Pipeline(object):
def __init__(self):
self.ingestion = IngestionStage()
self.digestion = DigestionStage()
def run(self, volume: int = 1):
print(self.ingestion.run())
print(self.digestion.run(volume=volume))
print(self.digestion.status())
return 'Pipeline complete'
if __name__ == '__main__':
fire.Fire(Pipeline)
rich
to add some color to our output.rich
library to our current Pipenv environment by running the following command:# Add rich to dependencies
$ pipenv install rich
def status(self):
return 'Satiated.' if self.satiated else 'Not satiated.'
$ python cli.py run --volume 2
Ingesting! Nom nom nom...
Burp! Burp!
Satiated.
Pipeline complete
$ python cli.py digestion status
Not satiated.
print
function from the rich
library and update what we return at the end.# Top of the file
from rich import print
# ... code omitted for brevity
# Back at the `status` definition.
def status(self):
print('[bold green]Satiated.[/bold green]') if self.satiated else print(
'[bold red]Not satiated.[/bold red]')
return 'Status complete'
self.satiated
output printed in bold green when true and self.satiated
output is printed in red when false.$ python cli.py run
Ingesting! Nom nom nom...
Burp!
Satiated.
Status complete
Pipeline complete
$ python cli.py digestion status
Not satiated.
Status complete
rich
package to add some color to our output.pawel_czerwinski