could probably get this down to:

`has_data = has_no_content or (self.sub_data is not None) or bool(self.panel_data)`

reads easier and does the assignment in one go rather than reassigning and comparing over multiple attempts.