mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-04 05:15:22 +00:00 
			
		
		
		
	Pyflake is a python (2) source checker. This patch fixes various (mostly trivial) errors and warnings it reports. Change-Id: Ia35c5ac61751b927814cf693994c632c412386ea
		
			
				
	
	
		
			107 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#! /usr/bin/env python
 | 
						|
# vin: sw=3 et:
 | 
						|
'''
 | 
						|
Copyright (C) 2012, Digium, Inc.
 | 
						|
Matt Jordan <mjordan@digium.com>
 | 
						|
 | 
						|
This program is free software, distributed under the terms of
 | 
						|
the GNU General Public License Version 2.
 | 
						|
'''
 | 
						|
 | 
						|
import sys
 | 
						|
import optparse
 | 
						|
 | 
						|
from xml.dom.minidom import parse
 | 
						|
 | 
						|
 | 
						|
def merge_parameter_information(managerEvent):
 | 
						|
    ''' Merge the parameter information across all managerEventInstances
 | 
						|
    within a managerEvent node '''
 | 
						|
 | 
						|
    def __swap_parameter_documentation(one, two):
 | 
						|
        # See who has the better documentation and use it
 | 
						|
        if (one.hasChildNodes() and not two.hasChildNodes()):
 | 
						|
            two.parentNode.replaceChild(one.cloneNode(True), two)
 | 
						|
        elif (two.hasChildNodes() and not one.hasChildNodes()):
 | 
						|
            one.parentNode.replaceChild(two.cloneNode(True), one)
 | 
						|
 | 
						|
    def __merge_parameter(param, other_instances):
 | 
						|
        # Compare the parameter to every other instance's set of parameters
 | 
						|
        for other in other_instances:
 | 
						|
            other_parameters = other.getElementsByTagName("parameter")
 | 
						|
            match = [p for p in other_parameters
 | 
						|
                     if p.getAttribute('name') == param.getAttribute('name')]
 | 
						|
            if (match):
 | 
						|
                # See who has the better documentation and use it
 | 
						|
                __swap_parameter_documentation(param, match[0])
 | 
						|
 | 
						|
    instances = managerEvent.getElementsByTagName("managerEventInstance")
 | 
						|
    merged = []
 | 
						|
    for instance in instances:
 | 
						|
        others = [i for i in instances if i != instance]
 | 
						|
        parameters = instance.getElementsByTagName("parameter")
 | 
						|
        for parameter in parameters:
 | 
						|
            if parameter not in merged:
 | 
						|
                merged.append(parameter)
 | 
						|
                __merge_parameter(parameter, others)
 | 
						|
 | 
						|
 | 
						|
def collapse_event_pair(managerEventOne, managerEventTwo):
 | 
						|
    # Move all children of managerEventTwo to managerEventOne
 | 
						|
    for node in managerEventTwo.childNodes:
 | 
						|
        managerEventOne.appendChild(node.cloneNode(True))
 | 
						|
 | 
						|
    return managerEventOne
 | 
						|
 | 
						|
 | 
						|
def collapse_manager_events(rootNode, managerEvents):
 | 
						|
    events = {}
 | 
						|
    for managerEvent in managerEvents:
 | 
						|
        if (managerEvent.parentNode.nodeName == 'list-elements'
 | 
						|
            or managerEvent.parentNode.nodeName == 'responses'):
 | 
						|
            continue
 | 
						|
        managerEvent.parentNode.removeChild(managerEvent)
 | 
						|
        attr = managerEvent.getAttribute('name')
 | 
						|
        if attr in events:
 | 
						|
            # match, collapse the two managerEvents
 | 
						|
            events[attr] = collapse_event_pair(events[attr], managerEvent)
 | 
						|
        else:
 | 
						|
            events[attr] = managerEvent
 | 
						|
 | 
						|
    # Combine parameter information and re-add the manager Events
 | 
						|
    for k, event in events.items():
 | 
						|
        merge_parameter_information(event)
 | 
						|
        rootNode.appendChild(event)
 | 
						|
    return
 | 
						|
 | 
						|
 | 
						|
def main(argv=None):
 | 
						|
 | 
						|
    if argv is None:
 | 
						|
        argv = sys.argv
 | 
						|
 | 
						|
    parser = optparse.OptionParser()
 | 
						|
    parser.add_option('-i', '--input', dest='input_file',
 | 
						|
                      default='doc/core-full-en_US.xml',
 | 
						|
                      help='The XML file to process')
 | 
						|
    parser.add_option('-o', '--output', dest='output_file',
 | 
						|
                      default='doc/core-en_US.xml',
 | 
						|
                      help='The XML file to create')
 | 
						|
    (options, args) = parser.parse_args(argv)
 | 
						|
 | 
						|
    dom = parse(options.input_file)
 | 
						|
 | 
						|
    datasource = open(options.output_file, 'w')
 | 
						|
    docs = dom.getElementsByTagName("docs")[0]
 | 
						|
    managerEvents = dom.getElementsByTagName("managerEvent")
 | 
						|
    if (managerEvents):
 | 
						|
        collapse_manager_events(docs, managerEvents)
 | 
						|
 | 
						|
    dom.writexml(datasource)
 | 
						|
    datasource.close()
 | 
						|
 | 
						|
    return 0
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    sys.exit(main() or 0)
 |