-
Notifications
You must be signed in to change notification settings - Fork 1
/
recipe.py
34 lines (29 loc) · 1.35 KB
/
recipe.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import logging
import configparser
from zipfile import ZipFile
class Recipe(configparser.ConfigParser):
''' Hold and interpret INI style configuration '''
def __init__(self, in_file):
self.log = logging.getLogger(self.__class__.__name__)
super(Recipe, self).__init__()
with ZipFile(in_file) as zip_recipe:
with zip_recipe.open('recipe.ini') as ini:
self.read_string(ini.read().decode('utf-8'))
def __getattr__(self, name):
'''Extract values from INI with simple accessors'''
if name == 'list':
return [k for k, v in self['Variables'].items() if v == 'list']
elif name == 'string':
return [k for k, v in self['Variables'].items() if v == 'string']
elif name == 'text':
return [k for k, v in self['Variables'].items() if v == 'text']
elif name == 'image':
return [k for k, v in self['Document'].items() if v == 'image']
elif name == 'outputFormat':
return [k for k, v in self['Document'].items()
if v == 'output_format']
elif name == 'template':
return [k for k, v in self['Document'].items() if v == 'template']
else:
raise AttributeError("'%s' object has no attribute '%s'" %
(self.__class__.__name__, name))