1010from . import util
1111
1212
13- def fixtag (tag , namespaces ):
13+ def fixtag (tag , namespaces : dict [ str , str ] ):
1414 # given a decorated tag (of the form {uri}tag), return prefixed
1515 # tag and namespace declaration, if any
1616 if isinstance (tag , ET .QName ):
@@ -20,13 +20,10 @@ def fixtag(tag, namespaces):
2020 if prefix is None :
2121 prefix = "ns%d" % len (namespaces )
2222 namespaces [namespace_uri ] = prefix
23- if prefix == "xml" :
24- xmlns = None
25- else :
26- xmlns = ("xmlns:%s" % prefix , namespace_uri )
23+ xmlns = None if prefix == "xml" else (f"xmlns:{ prefix } " , namespace_uri )
2724 else :
2825 xmlns = None
29- return "%s:%s" % ( prefix , tag ) , xmlns
26+ return f" { prefix } : { tag } " , xmlns
3027
3128
3229NS_MAP = {"http://musicbrainz.org/ns/mmd-2.0#" : "ws2" , "http://musicbrainz.org/ns/ext#-2.0" : "ext" }
@@ -63,7 +60,7 @@ def make_artist_credit(artists):
6360 return "" .join (names )
6461
6562
66- def parse_elements (valid_els , inner_els , element ):
63+ def parse_elements (valid_els : list [ str ] , inner_els : dict , element ) -> dict :
6764 """Extract single level subelements from an element.
6865 For example, given the element:
6966 <element>
@@ -104,7 +101,7 @@ def parse_elements(valid_els, inner_els, element):
104101 # add counts for lists when available
105102 m = re .match (r"([a-z0-9-]+)-list" , t )
106103 if m and "count" in sub .attrib :
107- result ["%s-count" % m .group (1 )] = int (sub .attrib ["count" ])
104+ result [f" { m .group (1 )} -count" ] = int (sub .attrib ["count" ])
108105 else :
109106 _log .info ("in <%s>, uncaught <%s>" , fixtag (element .tag , NS_MAP )[0 ], t )
110107 return result
@@ -131,7 +128,7 @@ def parse_attributes(attributes, element):
131128 return result
132129
133130
134- def parse_message (message ):
131+ def parse_message (message ) -> dict :
135132 tree = util .bytes_to_elementtree (message )
136133 root = tree .getroot ()
137134 result = {}
@@ -212,16 +209,14 @@ def parse_annotation(annotation):
212209
213210
214211def parse_lifespan (lifespan ):
215- parts = parse_elements (["begin" , "end" , "ended" ], {}, lifespan )
216-
217- return parts
212+ return parse_elements (["begin" , "end" , "ended" ], {}, lifespan )
218213
219214
220215def parse_area_list (al ):
221216 return [parse_area (a ) for a in al ]
222217
223218
224- def parse_area (area ):
219+ def parse_area (area ) -> dict :
225220 result = {}
226221 attribs = ["id" , "type" , "ext:score" ]
227222 elements = ["name" , "sort-name" , "disambiguation" ]
@@ -508,15 +503,15 @@ def parse_medium(medium):
508503 return result
509504
510505
511- def parse_disc_list (dl ):
506+ def parse_disc_list (dl ) -> list :
512507 return [parse_disc (d ) for d in dl ]
513508
514509
515- def parse_text_representation (textr ):
510+ def parse_text_representation (textr ) -> dict :
516511 return parse_elements (["language" , "script" ], {}, textr )
517512
518513
519- def parse_release_group (rg ):
514+ def parse_release_group (rg ) -> dict :
520515 result = {}
521516 attribs = ["id" , "type" , "ext:score" ]
522517 elements = ["title" , "user-rating" , "first-release-date" , "primary-type" , "disambiguation" ]
@@ -582,18 +577,18 @@ def parse_external_id_list(pl):
582577 return [parse_attributes (["id" ], p )["id" ] for p in pl ]
583578
584579
585- def parse_element_list (el ):
580+ def parse_element_list (el ) -> list :
586581 return [e .text for e in el ]
587582
588583
589584def parse_work_list (wl ):
590585 return [parse_work (w ) for w in wl ]
591586
592587
593- def parse_work (work ):
588+ def parse_work (work ) -> dict :
594589 result = {}
595- attribs = ["id" , "ext:score" , "type" ]
596- elements = ["title" , "user-rating" , "language" , "iswc" , "disambiguation" ]
590+ attribs : list [ str ] = ["id" , "ext:score" , "type" ]
591+ elements : list [ str ] = ["title" , "user-rating" , "language" , "iswc" , "disambiguation" ]
597592 inner_els = {
598593 "tag-list" : parse_tag_list ,
599594 "user-tag-list" : parse_tag_list ,
@@ -775,14 +770,14 @@ def parse_track(track):
775770 return result
776771
777772
778- def parse_tag_list (tl ) :
773+ def parse_tag_list (tl : ET . Element ) -> list [ dict [ str , str ]] :
779774 return [parse_tag (t ) for t in tl ]
780775
781776
782- def parse_tag (tag ) :
783- result = {}
784- attribs = ["count" ]
785- elements = ["name" ]
777+ def parse_tag (tag : ET . Element ) -> dict [ str , str ] :
778+ result : dict [ str , str ] = {}
779+ attribs : list [ str ] = ["count" ]
780+ elements : list [ str ] = ["name" ]
786781
787782 result .update (parse_attributes (attribs , tag ))
788783 result .update (parse_elements (elements , {}, tag ))
@@ -877,10 +872,10 @@ def make_rating_request(**kwargs):
877872 return ET .tostring (root , "utf-8" )
878873
879874
880- def make_isrc_request (recording2isrcs ):
875+ def make_isrc_request (recording2isrcs : dict ):
881876 NS = "http://musicbrainz.org/ns/mmd-2.0#"
882- root = ET .Element ("{%s} metadata" % NS )
883- rec_list = ET .SubElement (root , "{%s} recording-list" % NS )
877+ root = ET .Element (f"{{ { NS } }} metadata" )
878+ rec_list = ET .SubElement (root , f"{{ { NS } }} recording-list" )
884879 for rec , isrcs in recording2isrcs .items ():
885880 if len (isrcs ) > 0 :
886881 rec_xml = ET .SubElement (rec_list , "{%s}recording" % NS )
0 commit comments