# this seems wrong, but importing from generate_dates.config doesn't work
from generate_dates.config.cli import (
LectureStyleError, PaperError, PeriodError)
def parse_config(config, args):
"""Validate and filter the top-level configuration.
Returns separate references to the period configuration and the
paper configuration, as applicable. (Yes, the period configuration
includes the paper configuration, but it may also include other
papers, so it's more convenient to return a separate reference
for the specified paper.)
The configuration file will normally contain specifications for
several teaching periods and papers. We don't need all of this:
usually we're only interested in one teaching period and one
paper (if relevant).
"""
period_config = paper_config = None
# this is all irrelevant if we're going ISO style
if args.style != "iso":
if args.period not in config.keys():
raise PeriodError()
period_config = config[args.period]
# raises KeyError if source key is missing
period_config["name"] and period_config["weeks"]
# papers are irrelevant in "calendar" style
if args.style == "lecture":
if "papers" in period_config.keys():
if args.paper in period_config["papers"].keys():
paper_config = period_config["papers"][args.paper]
# we expect at least a "lectures" entry
paper_config["lectures"]
else:
raise PaperError()
else:
raise LectureStyleError()
return period_config, paper_config