def parse_aspect()

in src/models/struxgpt_v2.py [0:0]


    def parse_aspect(self, aspect: dict):
        aspect_content = aspect[self.scfg.aspect_key]
        assert isinstance(aspect_content, str) and aspect_content

        sent_range = aspect[self.scfg.sent_key]
        if isinstance(sent_range, dict):
            sent_range = [sent_range['start'], sent_range['end']]
        else:
            assert isinstance(sent_range, list) and len(sent_range)
        assert all(isinstance(sent_num, int) for sent_num in sent_range)
        assert sent_range[0] <= sent_range[-1]
        sent_range = [min(sent_range), max(sent_range)]

        subaspects = [self.parse_aspect(subaspect) \
                            for subaspect in aspect.get(self.scfg.subaspect_key, [])]
        
        return AspectItem(aspect_content, sent_range, subaspects)