<s> """<STR_LIT>""" <EOL> from copy import deepcopy <EOL> from collections import OrderedDict <EOL> class Util ( object ) : <EOL> @ staticmethod <EOL> def keys_to_lower ( source_dict ) : <EOL> """<STR_LIT>""" <EOL> if type ( source_dict ) is None : <EOL> return dict ( ) <EOL> elif type ( source_dict ) in ( dict , OrderedDict ) : <EOL> for k in source_dict . keys ( ) : <EOL> if type ( source_dict [ k ] ) is dict : <EOL> source_dict [ k ] = Util . keys_to_lower ( source_dict [ k ] ) <EOL> return dict ( ( str ( k ) . lower ( ) , v ) for k , v in source_dict . iteritems ( ) ) <EOL> elif type ( source_dict ) is list : <EOL> for num , item in enumerate ( source_dict ) : <EOL> source_dict [ num ] = Util . keys_to_lower ( item ) <EOL> return source_dict <EOL> @ staticmethod <EOL> def string_to_list ( string ) : <EOL> """<STR_LIT>""" <EOL> if type ( string ) is str : <EOL> new_list = string . replace ( '<STR_LIT:U+002C>' , '<STR_LIT:U+0020>' ) . split ( ) <EOL> for index , value in enumerate ( new_list ) : <EOL> if type ( value ) is str and value . lower ( ) == '<STR_LIT:none>' : <EOL> new_list [ index ] = None <EOL> return new_list <EOL> elif type ( string ) is list : <EOL> return string <EOL> elif string is None : <EOL> return [ ] <EOL> else : <EOL> return [ string ] <EOL> @ staticmethod <EOL> def string_to_lowercase_list ( string ) : <EOL> """<STR_LIT>""" <EOL> new_list = Util . string_to_list ( string ) <EOL> new_list = [ x . lower ( ) for x in new_list ] <EOL> return new_list <EOL> @ staticmethod <EOL> def list_of_lists ( incoming_string ) : <EOL> """<STR_LIT>""" <EOL> final_list = list ( ) <EOL> if type ( incoming_string ) is str : <EOL> final_list = [ Util . string_to_list ( incoming_string ) ] <EOL> else : <EOL> for item in incoming_string : <EOL> final_list . append ( Util . string_to_list ( item ) ) <EOL> return final_list <EOL> @ staticmethod <EOL> def chunker ( l , n ) : <EOL> """<STR_LIT>""" <EOL> for i in xrange ( <NUM_LIT:0> , len ( l ) , n ) : <EOL> yield l [ i : i + n ] <EOL> @ staticmethod <EOL> def dict_merge ( a , b , combine_lists = True ) : <EOL> """<STR_LIT>""" <EOL> if not isinstance ( b , dict ) : <EOL> return b <EOL> result = deepcopy ( a ) <EOL> for k , v in b . iteritems ( ) : <EOL> if k in result and isinstance ( result [ k ] , dict ) : <EOL> result [ k ] = Util . dict_merge ( result [ k ] , v ) <EOL> elif k in result and isinstance ( result [ k ] , list ) and combine_lists : <EOL> result [ k ] . extend ( v ) <EOL> else : <EOL> result [ k ] = deepcopy ( v ) <EOL> return result <EOL> @ staticmethod <EOL> def hex_string_to_list ( input_string , output_length = <NUM_LIT:3> ) : <EOL> """<STR_LIT>""" <EOL> output = [ ] <EOL> input_string = str ( input_string ) . zfill ( output_length * <NUM_LIT:2> ) <EOL> for i in xrange ( <NUM_LIT:0> , len ( input_string ) , <NUM_LIT:2> ) : <EOL> output . append ( int ( input_string [ i : i + <NUM_LIT:2> ] , <NUM_LIT:16> ) ) <EOL> return output [ <NUM_LIT:0> : output_length : ] <EOL> @ staticmethod <EOL> def hex_string_to_int ( inputstring , maxvalue = <NUM_LIT:255> ) : <EOL> """<STR_LIT>""" <EOL> return_int = int ( inputstring , <NUM_LIT:16> ) <EOL> if return_int > maxvalue : <EOL> return_int = maxvalue <EOL> return return_int <EOL> @ staticmethod <EOL> def event_config_to_dict ( config ) : <EOL> return_dict = dict ( ) <EOL> if type ( config ) is dict : <EOL> return config <EOL> elif type ( config ) is str : <EOL> config = Util . string_to_list ( config ) <EOL> if type ( config ) is list : <EOL> for event in config : <EOL> return_dict [ event ] = <NUM_LIT:0> <EOL> return return_dict <EOL> @ staticmethod <EOL> def int_to_hex_string ( source_int ) : <EOL> """<STR_LIT>""" <EOL> source_int = int ( source_int ) <EOL> if <NUM_LIT:0> <= source_int <= <NUM_LIT:255> : <EOL> return format ( source_int , '<STR_LIT:x>' ) . upper ( ) . zfill ( <NUM_LIT:2> ) <EOL> else : <EOL> raise ValueError ( "<STR_LIT>" % ( source_int ) ) <EOL> @ staticmethod <EOL> def pwm8_to_hex_string ( source_int ) : <EOL> lookup_table = { <EOL> <NUM_LIT:0> : '<STR_LIT>' , <EOL> <NUM_LIT:1> : '<STR_LIT>' , <EOL> <NUM_LIT:2> : '<STR_LIT>' , <EOL> <NUM_LIT:3> : '<STR_LIT>' , <EOL> <NUM_LIT:4> : '<STR_LIT>' , <EOL> <NUM_LIT:5> : '<STR_LIT>' , <EOL> <NUM_LIT:6> : '<STR_LIT>' , <EOL> <NUM_LIT:7> : '<STR_LIT>' , <EOL> <NUM_LIT:8> : '<STR_LIT>' , <EOL> } <EOL> if <NUM_LIT:0> <= source_int <= <NUM_LIT:8> : <EOL> return lookup_table [ source_int ] <EOL> else : <EOL> raise ValueError ( "<STR_LIT>" <EOL> "<STR_LIT>" % ( source_int ) ) <EOL> @ staticmethod <EOL> def pwm32_to_hex_string ( source_int ) : <EOL> lookup_table = { <EOL> <NUM_LIT:0> : '<STR_LIT>' , <EOL> <NUM_LIT:1> : '<STR_LIT>' , <EOL> <NUM_LIT:2> : '<STR_LIT>' , <EOL> <NUM_LIT:3> : '<STR_LIT>' , <EOL> <NUM_LIT:4> : '<STR_LIT>' , <EOL> <NUM_LIT:5> : '<STR_LIT>' , <EOL> <NUM_LIT:6> : '<STR_LIT>' , <EOL> <NUM_LIT:7> : '<STR_LIT>' , <EOL> <NUM_LIT:8> : '<STR_LIT>' , <EOL> <NUM_LIT:9> : '<STR_LIT>' , <EOL> <NUM_LIT:10> : '<STR_LIT>' , <EOL> <NUM_LIT:11> : '<STR_LIT>' , <EOL> <NUM_LIT:12> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT:15> : '<STR_LIT>' , <EOL> <NUM_LIT:16> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT:20> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT:30> : '<STR_LIT>' , <EOL> <NUM_LIT> : '<STR_LIT>' , <EOL> <NUM_LIT:32> : '<STR_LIT>' , <EOL> } <EOL> if <NUM_LIT:0> <= source_int <= <NUM_LIT:32> : <EOL> return lookup_table [ source_int ] <EOL> else : <EOL> raise ValueError ( "<STR_LIT>" <EOL> "<STR_LIT>" % ( source_int ) ) <EOL> @ staticmethod <EOL> def pwm32_to_int ( source_int ) : <EOL> lookup_table = { <EOL> <NUM_LIT:0> : <NUM_LIT:0> , <EOL> <NUM_LIT:1> : <NUM_LIT:2> , <EOL> <NUM_LIT:2> : <NUM_LIT> , <EOL> <NUM_LIT:3> : <NUM_LIT> , <EOL> <NUM_LIT:4> : <NUM_LIT> , <EOL> <NUM_LIT:5> : <NUM_LIT> , <EOL> <NUM_LIT:6> : <NUM_LIT> , <EOL> <NUM_LIT:7> : <NUM_LIT> , <EOL> <NUM_LIT:8> : <NUM_LIT> , <EOL> <NUM_LIT:9> : <NUM_LIT> , <EOL> <NUM_LIT:10> : <NUM_LIT> , <EOL> <NUM_LIT:11> : <NUM_LIT> , <EOL> <NUM_LIT:12> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT:15> : <NUM_LIT> , <EOL> <NUM_LIT:16> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT:20> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT:30> : <NUM_LIT> , <EOL> <NUM_LIT> : <NUM_LIT> , <EOL> <NUM_LIT:32> : <NUM_LIT> , <EOL> } <EOL> if <NUM_LIT:0> <= source_int <= <NUM_LIT:32> : <EOL> return lookup_table [ source_int ] <EOL> else : <EOL> raise ValueError ( "<STR_LIT>" <EOL> "<STR_LIT>" % ( source_int ) ) <EOL> @ staticmethod <EOL> def pwm8_to_int ( source_int ) : <EOL> lookup_table = { <EOL> <NUM_LIT:0> : <NUM_LIT:0> , <EOL> <NUM_LIT:1> : <NUM_LIT:1> , <EOL> <NUM_LIT:2> : <NUM_LIT> , <EOL> <NUM_LIT:3> : <NUM_LIT> , <EOL> <NUM_LIT:4> : <NUM_LIT> , <EOL> <NUM_LIT:5> : <NUM_LIT> , <EOL> <NUM_LIT:6> : <NUM_LIT> , <EOL> <NUM_LIT:7> : <NUM_LIT> , <EOL> <NUM_LIT:8> : <NUM_LIT:255> , <EOL> } <EOL> if <NUM_LIT:0> <= source_int <= <NUM_LIT:8> : <EOL> return lookup_table [ source_int ] <EOL> else : <EOL> raise ValueError ( "<STR_LIT>" ) <EOL> @ staticmethod <EOL> def pwm8_to_on_off ( source_int ) : <EOL> lookup_table = { <EOL> <NUM_LIT:0> : ( <NUM_LIT:0> , <NUM_LIT:0> ) , <EOL> <NUM_LIT:1> : ( <NUM_LIT:1> , <NUM_LIT:7> ) , <EOL> <NUM_LIT:2> : ( <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> <NUM_LIT:3> : ( <NUM_LIT:3> , <NUM_LIT:5> ) , <EOL> <NUM_LIT:4> : ( <NUM_LIT:1> , <NUM_LIT:1> ) , <EOL> <NUM_LIT:5> : ( <NUM_LIT:5> , <NUM_LIT:3> ) , <EOL> <NUM_LIT:6> : ( <NUM_LIT:3> , <NUM_LIT:1> ) , <EOL> <NUM_LIT:7> : ( <NUM_LIT:7> , <NUM_LIT:1> ) , <EOL> <NUM_LIT:8> : ( <NUM_LIT:8> , <NUM_LIT:0> ) , <EOL> } <EOL> source_int = int ( source_int ) <EOL> if <NUM_LIT:0> <= source_int <= <NUM_LIT:8> : <EOL> return lookup_table [ source_int ] <EOL> else : <EOL> raise ValueError ( "<STR_LIT>" ) <EOL> @ staticmethod <EOL> def normalize_hex_string ( source_hex , num_chars = <NUM_LIT:2> ) : <EOL> """<STR_LIT>""" <EOL> return str ( source_hex ) . upper ( ) . zfill ( num_chars ) <EOL> @ staticmethod <EOL> def bin_str_to_hex_str ( source_int_str , num_chars ) : <EOL> return Util . normalize_hex_string ( '<STR_LIT>' % int ( source_int_str , <NUM_LIT:2> ) , <EOL> num_chars ) </s>
