(self, alogger)
Ensure that there are either loggers or placeholders all the way
        from the specified logger to the root of the logger hierarchy.
Ensure that there are either loggers or placeholders all the way
        from the specified logger to the root of the logger hierarchy.
Ensure that there are either loggers or placeholders all the way from the specified logger to the root of the logger hierarchy .
def _fixupParents(self, alogger):
        """
        Ensure that there are either loggers or placeholders all the way
        from the specified logger to the root of the logger hierarchy.
        """
        name = alogger.name
        i = name.rfind(".")
        rv = None
        while (i > 0) and not rv:
            substr = name[:i]
            if substr not in self.loggerDict:
                self.loggerDict[substr] = PlaceHolder(alogger)
            else:
                obj = self.loggerDict[substr]
                if isinstance(obj, Logger):
                    rv = obj
                else:
                    assert isinstance(obj, PlaceHolder)
                    obj.append(alogger)
            i = name.rfind(".", 0, i - 1)
        if not rv:
            rv = self.root
        alogger.parent = rv
def _fixupParents ( self , alogger ) : name = alogger . name i = name . rfind ( "." ) rv = None while ( i > 0 ) and not rv : substr = name [ : i ] if substr not in self . loggerDict : self . loggerDict [ substr ] = PlaceHolder ( alogger ) else : obj = self . loggerDict [ substr ] if isinstance ( obj , Logger ) : rv = obj else : assert isinstance ( obj , PlaceHolder ) obj . append ( alogger ) i = name . rfind ( "." , 0 , i - 1 ) if not rv : rv = self . root alogger . parent = rv