code: def remove_constraint(self, twig=None, **kwargs):
          
          # let's run delayed constraints first to ensure that we get the same
          # results in interactive and non-interactive modes as well as to make
          # sure we don't have delayed constraints for the constraint we're
          #  about to remove.  This could perhaps be optimized by searching
          #  for this/these constraints and only running/removing those, but
          #  probably isn't worth the savings.
          changed_params = self.run_delayed_constraints()
  
          kwargs['twig'] = twig
          redo_kwargs = deepcopy(kwargs)
  
          kwargs['context'] = 'constraint'
  
          # we'll get the constraint so that we can undo the bookkeeping
          # and also reproduce an undo command
          constraint = self.get_parameter(**kwargs)
  
          # undo parameter bookkeeping
          constraint._remove_bookkeeping()
  
          # and finally remove it
          self.remove_parameter(**kwargs)
  
  
          undo_kwargs = {k: v for k, v in constraint.to_dict().items()
                         if v is not None and
                         k not in ['uniqueid', 'uniquetwig', 'twig',
                                   'Class', 'context']}
          self._add_history(redo_func='remove_constraint',
                            redo_kwargs=redo_kwargs,
                            undo_func='add_constraint',
                            undo_kwargs=undo_kwargs)
docs: Remove a 'constraint' from the bundle
  
          :parameter str twig: twig to filter for the constraint
          :parameter **kwargs: any other tags to do the filter
              (except twig or context)