def __init__(self, name=None, number=None, method=None): if name is None and number is None: raise TypeError("extended events require a name") try: self._lock.acquire() if name is None: name = pn_event_type_name(number) if number is None: number = self._extended.next() if method is None: method = "on_%s" % name self.name = name self.number = number self.method = method self.TYPES[number] = self finally: self._lock.release()