1. Moving all YAML library usage into 'util.py' via utility function.
2. Wrapping 'import yaml' in error handling to report what library to install.
import os
import glob
import json
-import yaml
import re
from optparse import OptionParser
"""Check configuration file."""
config_file = os.path.join(source_dir, '_config.yml')
- with open(config_file, 'r') as reader:
- config = yaml.load(reader)
+ config = load_yaml(config_file)
reporter.check_field(config_file, 'configuration', config, 'kind', 'lesson')
import sys
import json
-import yaml
from subprocess import Popen, PIPE
+try:
+ import yaml
+except ImportError:
+ print('Unable to import YAML module: please install PyYAML', file=sys.stderr)
+ sys.exit(1)
class Reporter(object):
"""Collect and report errors."""
sys.exit(1)
return metadata_raw, metadata_yaml, text
+
+
+def load_yaml(filename):
+ """
+ Wrapper around YAML loading so that 'import yaml' and error
+ handling is only needed in one place.
+ """
+
+ with open(filename, 'r') as reader:
+ return yaml.load(reader)
import sys
import os
import re
-import yaml
from datetime import date
from util import Reporter, split_metadata
Check YAML configuration file.
"""
- with open(filename, 'r') as reader:
- config = yaml.load(reader)
+ config = load_yaml(filename)
- reporter.check(config['kind'] == 'workshop',
+ kind = config.get('kind', None)
+ reporter.check(kind == 'workshop',
filename,
- 'Not configured as a workshop: found "{0}" instead',
- config['kind'])
+ 'Missing or unknown kind of event: {0}',
+ kind)
+
+ carpentry = config.get('carpentry', None)
+ reporter.check(carpentry in ('swc', 'dc'),
+ filename,
+ 'Missing or unknown carpentry: {0}',
+ carpentry)
def main():