Commit c84fea0ea2677890e703e311095df01faed61953
1 parent
977fa070
Exists in
master
and in
1 other branch
fix error where dependencies could fail to load
Showing
1 changed file
with
10 additions
and
9 deletions
Show diff stats
aprendizations/learnapp.py
@@ -376,12 +376,7 @@ class LearnApp(object): | @@ -376,12 +376,7 @@ class LearnApp(object): | ||
376 | for tref, attr in topics.items(): | 376 | for tref, attr in topics.items(): |
377 | logger.debug(f' + {tref}') | 377 | logger.debug(f' + {tref}') |
378 | for d in attr.get('deps', []): | 378 | for d in attr.get('deps', []): |
379 | - if d not in g.nodes(): | ||
380 | - logger.error(f'Topic "{tref}" depends on "{d}" but it ' | ||
381 | - f'does not exist') | ||
382 | - raise LearnException() | ||
383 | - else: | ||
384 | - g.add_edge(d, tref) | 379 | + g.add_edge(d, tref) |
385 | 380 | ||
386 | t = g.nodes[tref] # get current topic node | 381 | t = g.nodes[tref] # get current topic node |
387 | t['name'] = attr.get('name', tref) | 382 | t['name'] = attr.get('name', tref) |
@@ -409,14 +404,20 @@ class LearnApp(object): | @@ -409,14 +404,20 @@ class LearnApp(object): | ||
409 | 404 | ||
410 | # load questions as list of dicts | 405 | # load questions as list of dicts |
411 | topicpath: str = path.join(g.graph['prefix'], tref) | 406 | topicpath: str = path.join(g.graph['prefix'], tref) |
412 | - fullpath: str = path.join(topicpath, t['file']) | 407 | + try: |
408 | + fullpath: str = path.join(topicpath, t['file']) | ||
409 | + except Exception: | ||
410 | + msg1 = f'Invalid topic "{tref}"' | ||
411 | + msg2 = f'Check dependencies of {", ".join(g.successors(tref))}' | ||
412 | + raise LearnException(f'{msg1}. {msg2}') | ||
413 | 413 | ||
414 | logger.debug(f' Loading {fullpath}') | 414 | logger.debug(f' Loading {fullpath}') |
415 | - # questions: List[QDict] = load_yaml(fullpath, default=[]) | ||
416 | try: | 415 | try: |
417 | questions: List[QDict] = load_yaml(fullpath) | 416 | questions: List[QDict] = load_yaml(fullpath) |
418 | except Exception: | 417 | except Exception: |
419 | - raise LearnException(f'Failed to load "{fullpath}"') | 418 | + msg = f'Failed to load "{fullpath}"' |
419 | + logger.error(msg) | ||
420 | + raise LearnException(msg) | ||
420 | 421 | ||
421 | if not isinstance(questions, list): | 422 | if not isinstance(questions, list): |
422 | msg = f'File "{fullpath}" must be a list of questions' | 423 | msg = f'File "{fullpath}" must be a list of questions' |