From 8a58df2b87bf6028168500c0896c9994b06eaa5e Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Wed, 8 Nov 2023 19:35:12 -0800 Subject: [PATCH] Red reduction --- wavinfo/wave_ixml_reader.py | 52 +++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/wavinfo/wave_ixml_reader.py b/wavinfo/wave_ixml_reader.py index 76ac4fc..b77345e 100644 --- a/wavinfo/wave_ixml_reader.py +++ b/wavinfo/wave_ixml_reader.py @@ -1,11 +1,17 @@ from lxml import etree as ET import io -from collections import namedtuple +# from collections import namedtuple from typing import Optional from enum import IntEnum +from typing import NamedTuple -IXMLTrack = namedtuple('IXMLTrack', ['channel_index', 'interleave_index', 'name', 'function']) +# IXMLTrack = namedtuple('IXMLTrack', ['channel_index', 'interleave_index', 'name', 'function']) +class IXMLTrack(NamedTuple): + channel_index: int + interleave_index: int + name: str + function: str class SteinbergMetadata: """ @@ -72,7 +78,8 @@ class SteinbergMetadata: """ `AudioSpeakerArrangement` property """ - val = self.parsed.find("./ATTR_LIST/ATTR[NAME = 'AudioSpeakerArrangement']/VALUE") + val = self.parsed.find( + "./ATTR_LIST/ATTR[NAME = 'AudioSpeakerArrangement']/VALUE") if val is not None: return type(self).AudioSpeakerArrangement(int(val.text)) @@ -81,7 +88,8 @@ class SteinbergMetadata: """ AudioSampleFormatSize """ - val = self.parsed.find("./ATTR_LIST/ATTR[NAME = 'AudioSampleFormatSize']/VALUE") + val = self.parsed.find( + "./ATTR_LIST/ATTR[NAME = 'AudioSampleFormatSize']/VALUE") if val is not None: return int(val.text) @@ -90,7 +98,8 @@ class SteinbergMetadata: """ MediaCompany """ - val = self.parsed.find("./ATTR_LIST/ATTR[NAME = 'MediaCompany']/VALUE") + val = self.parsed.find( + "./ATTR_LIST/ATTR[NAME = 'MediaCompany']/VALUE") if val is not None: return val.text @@ -99,7 +108,8 @@ class SteinbergMetadata: """ MediaDropFrames """ - val = self.parsed.find("./ATTR_LIST/ATTR[NAME = 'MediaDropFrames']/VALUE") + val = self.parsed.find( + "./ATTR_LIST/ATTR[NAME = 'MediaDropFrames']/VALUE") if val is not None: return val.text == "1" @@ -108,7 +118,8 @@ class SteinbergMetadata: """ MediaDuration """ - val = self.parsed.find("./ATTR_LIST/ATTR[NAME = 'MediaDuration']/VALUE") + val = self.parsed.find( + "./ATTR_LIST/ATTR[NAME = 'MediaDuration']/VALUE") if val is not None: return float(val.text) @@ -181,10 +192,16 @@ class WavIXMLFormat: """ for track in self.parsed.find("./TRACK_LIST").iter(): if track.tag == 'TRACK': - yield IXMLTrack(channel_index=track.xpath('string(CHANNEL_INDEX/text())'), - interleave_index=track.xpath('string(INTERLEAVE_INDEX/text())'), - name=track.xpath('string(NAME/text())'), - function=track.xpath('string(FUNCTION/text())')) + yield IXMLTrack( + channel_index= + track.xpath('string(CHANNEL_INDEX/text())'), + interleave_index= + track.xpath('string(INTERLEAVE_INDEX/text())'), + name= + track.xpath('string(NAME/text())'), + function= + track.xpath('string(FUNCTION/text())') + ) @property def project(self) -> Optional[str]: @@ -240,11 +257,8 @@ class WavIXMLFormat: return None def to_dict(self): - return dict(track_list=list(map(lambda x: x._asdict(), self.track_list)), - project=self.project, - scene=self.scene, - take=self.take, - tape=self.tape, - family_uid=self.family_uid, - family_name=self.family_name - ) + return dict( + track_list=list(map(lambda x: x._asdict(), self.track_list)), + project=self.project, scene=self.scene, take=self.take, + tape=self.tape, family_uid=self.family_uid, + family_name=self.family_name )