﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
13734	Simpler implementation of django.dispatch.dispatcher.Signal._remove_receiver	Satoru Logic	Satoru Logic	"In Django 1.2.1, the ''_remove_receiver'' method of the ''django.dispatch.dispatcher.Signal'' class is implemented as:
{{{

    def _remove_receiver(self, receiver):
        """"""
        Remove dead receivers from connections.
        """"""

        to_remove = []
        for key, connected_receiver in self.receivers:
            if connected_receiver == receiver:
                to_remove.append(key)
        for key in to_remove:
            for idx, (r_key, _) in enumerate(self.receivers):
                if r_key == key:
                    del self.receivers[idx]
}}}

I think this can be simplified by iterating the ''receivers'' list reversely and removing the specified receiver by index:
{{{
    def _remove_receiver(self, receiver):
        """"""
        Remove dead receivers from connections.
        """"""
        for idx in xrange(len(self.receivers)-1, -1, -1):
            (_, connected_receiver) = self.receivers[idx]
            if connected_receiver == receiver:
                del self.receivers[idx]

}}}
"	Cleanup/optimization	closed	Core (Other)	1.2	Normal	fixed	dispatcher, signal	Russell Keith-Magee satorulogic@…	Accepted	1	0	0	1	0	0
