docs: def constraint_df(self):
          """
          A DataFrame representing all constraints, hidden or not
          """
          df = pd.DataFrame()
          for name,c in self.constraints.items():
              df[name] = c.ok
          for name,c in self.hidden_constraints.items():
              df[name] = c.ok
          return df