code: def _voltage_angle_diff_limit(self, buses, branches):
          nb = len(buses)
          if not self.ignore_ang_lim:
              iang = [i for i, b in enumerate(branches)
                      if (b.ang_min and (b.ang_min > -360.0))
                      or (b.ang_max and (b.ang_max < 360.0))]
              iangl = array([i for i, b in enumerate(branches)
                       if b.ang_min is not None])[iang]
              iangh = array([i for i, b in enumerate(branches)
                             if b.ang_max is not None])[iang]
              nang = len(iang)
              if nang > 0:
                  ii = range(nang) + range(nang)
                  jjf = array([b.from_bus._i for b in branches])[iang]
                  jjt = array([b.to_bus._i for b in branches])[iang]
                  jj = r_[jjf, jjt]
                  Aang = csr_matrix(r_[ones(nang), -ones(nang)], (ii, jj))
                  uang = Inf * ones(nang)
                  lang = -uang
                  lang[iangl] = array([b.ang_min * (pi / 180.0)
                                      for b in branches])[iangl]
                  uang[iangh] = array([b.ang_max * (pi / 180.0)
                                      for b in branches])[iangh]
              else:
                  Aang = zeros((0, nb))
                  lang = array([])
                  uang = array([])
          else:
              Aang = zeros((0, nb))
              lang = array([])
              uang = array([])
          return LinearConstraint("ang", Aang, lang, uang, ["Va"])