3232import sys
3333import xml .etree .ElementTree as ET
3434from collections import OrderedDict
35+ from typing import NoReturn
3536from xml .dom import minidom
3637
3738
38- def usage ():
39+ def usage () -> NoReturn :
3940 print (
4041 "\n \t Usage: %s -i <input> -o <output> -m [partition_name1=image_filename1,partition_name2=image_filename2,...]\n \t Version 1.0\n "
4142 % (sys .argv [0 ])
@@ -72,7 +73,7 @@ def usage():
7273disk_entry = None
7374partition_entries = []
7475# store partition image map passed from command line
75- partition_image_map = {}
76+ partition_image_map : dict [ str , str ] = {}
7677input_file = None
7778output_xml = None
7879
@@ -92,19 +93,23 @@ def disk_options(argv):
9293 disk_params ["GROW_LAST_PARTITION_TO_FILL_DISK" ] = "true"
9394 elif opt in ["--align-partitions" ]:
9495 disk_params ["ALIGN_PARTITIONS_TO_PERFORMANCE_BOUNDARY" ] = "true"
95- disk_params ["PERFORMANCE_BOUNDARY_IN_KB" ] = int (arg ) // 1024
96+ disk_params ["PERFORMANCE_BOUNDARY_IN_KB" ] = str ( int (arg ) // 1024 )
9697 return disk_params
9798
9899
99100def partition_size_in_kb (size ):
100101 if not re .search ("[a-zA-Z]+" , size ):
101102 return int (size ) // 1024
102- if re .search ("([0-9])*(?=([Kk]([Bb])*))" , size ):
103- return int (re .search ("([0-9])*(?=([Kk]([Bb])*))" , size ).group (0 ))
104- if re .search ("([0-9])*(?=([Mm]([Bb])*))" , size ):
105- return int (re .search ("([0-9])*(?=([Mm]([Bb])*))" , size ).group (0 )) * 1024
106- if re .search ("([0-9])*(?=([Gg]([Bb])*))" , size ):
107- return int (re .search ("([0-9])*(?=([Gg]([Bb])*))" , size ).group (0 )) * 1024 * 1024
103+ m = re .search ("([0-9]+)(?=[Kk][Bb]?)" , size )
104+ if m :
105+ return int (m .group (0 ))
106+ m = re .search ("([0-9]+)(?=[Mm][Bb]?)" , size )
107+ if m :
108+ return int (m .group (0 )) * 1024
109+ m = re .search ("([0-9]+)(?=[Gg][Bb]?)" , size )
110+ if m :
111+ return int (m .group (0 )) * 1024 * 1024
112+ raise ValueError ("Unrecognized size format: '%s'" % size )
108113
109114
110115def partition_options (argv ):
@@ -134,19 +139,19 @@ def partition_options(argv):
134139 partition_entry ["filename" ] = arg
135140 elif opt in ["--sparse" ]:
136141 partition_entry ["sparse" ] = arg
137- if partition_entry ["label" ] in partition_image_map . keys () :
142+ if partition_entry ["label" ] in partition_image_map :
138143 partition_entry ["filename" ] = partition_image_map [partition_entry ["label" ]]
139144 return phys_part , partition_entry
140145
141146
142147def parse_partition_entries (partition_entries ):
143- partitions_params = {}
148+ partitions_params : dict [ int , list [ dict [ str , str ]]] = {}
144149
145150 for partition_entry in partition_entries :
146151 opts_list = list (partition_entry .split (" " ))
147152 if opts_list [0 ] == "--partition" :
148153 try :
149- options , remainders = getopt .gnu_getopt (
154+ options , _remainders = getopt .gnu_getopt (
150155 opts_list [1 :],
151156 "" ,
152157 [
@@ -173,7 +178,7 @@ def parse_disk_entry(disk_entry):
173178 opts_list = list (disk_entry .split (" " ))
174179 if opts_list [0 ] == "--disk" :
175180 try :
176- options , remainders = getopt .gnu_getopt (
181+ options , _remainders = getopt .gnu_getopt (
177182 opts_list [1 :],
178183 "" ,
179184 [
@@ -196,12 +201,12 @@ def generate_multi_lun_xml(disk_params, partitions, output_xml):
196201 parser_instruction_text = ""
197202
198203 for key , value in disk_params .items ():
199- if not key == "size" and not key = = "type" :
204+ if key != "size" and key ! = "type" :
200205 parser_instruction_text += "\n \t " + str (key ) + "=" + str (value ) + "\n \t "
201206
202207 ET .SubElement (root , "parser_instructions" ).text = parser_instruction_text
203208
204- for phys_part , entries in sorted (partitions .items (), key = lambda item : int (item [0 ])):
209+ for _phys_part , entries in sorted (partitions .items (), key = lambda item : int (item [0 ])):
205210 found = False
206211 for part_entry in entries :
207212
@@ -257,6 +262,8 @@ def generate_partition_xml(disk_params, partitions, output_xml):
257262 except Exception as argerr :
258263 print (str (argerr ))
259264 usage ()
265+ if input_file is None or output_xml is None :
266+ usage ()
260267 f = open (input_file )
261268 line = f .readline ()
262269 while line :
0 commit comments