1+ import contextlib
2+ from collections .abc import Callable
13from io import BytesIO
4+ from typing import Any
25
3- from mutagen import File , Metadata
4- from mutagen import MutagenError
6+ from mutagen import File , Metadata , MutagenError
7+ from mutagen .aac import AAC
8+ from mutagen .ac3 import AC3
9+ from mutagen .aiff import AIFF
10+ from mutagen .apev2 import APEv2 , APEv2File
511from mutagen .asf import ASF
6- from mutagen .apev2 import APEv2File , APEv2
12+ from mutagen .dsdiff import DSDIFF
13+ from mutagen .dsf import DSF
14+ from mutagen .easyid3 import EasyID3 , EasyID3FileType
15+ from mutagen .easymp4 import EasyMP4
716from mutagen .flac import FLAC
8- from mutagen .easyid3 import EasyID3FileType , EasyID3
9- from mutagen .id3 import ID3FileType , ID3
10- from mutagen .mp3 import MP3
11- from mutagen .mp3 import EasyMP3
17+ from mutagen .id3 import ID3 , ID3FileType
18+ from mutagen .monkeysaudio import MonkeysAudio
19+ from mutagen .mp3 import MP3 , EasyMP3
20+ from mutagen .mp4 import MP4
21+ from mutagen .musepack import Musepack
1222from mutagen .oggflac import OggFLAC
23+ from mutagen .oggopus import OggOpus
1324from mutagen .oggspeex import OggSpeex
1425from mutagen .oggtheora import OggTheora
1526from mutagen .oggvorbis import OggVorbis
16- from mutagen .oggopus import OggOpus
17- from mutagen .trueaudio import EasyTrueAudio
18- from mutagen .trueaudio import TrueAudio
19- from mutagen .wavpack import WavPack
20- from mutagen .easymp4 import EasyMP4
21- from mutagen .mp4 import MP4
22- from mutagen .musepack import Musepack
23- from mutagen .monkeysaudio import MonkeysAudio
2427from mutagen .optimfrog import OptimFROG
25- from mutagen .aiff import AIFF
26- from mutagen .aac import AAC
27- from mutagen .ac3 import AC3
2828from mutagen .smf import SMF
2929from mutagen .tak import TAK
30- from mutagen .dsf import DSF
30+ from mutagen .trueaudio import EasyTrueAudio , TrueAudio
3131from mutagen .wave import WAVE
32- from mutagen .dsdiff import DSDIFF
33-
32+ from mutagen .wavpack import WavPack
3433
3534OPENERS = [
3635 MP3 , TrueAudio , OggTheora , OggSpeex , OggVorbis , OggFLAC ,
4342# OPENERS = [AAC]
4443
4544
46- def run (opener , f ):
45+ def run (opener : Callable [[ BytesIO ], Any ], f : BytesIO ):
4746 try :
4847 res = opener (f )
4948 except MutagenError :
@@ -56,32 +55,28 @@ def run(opener, f):
5655 # These can still fail because we might need to parse more data
5756 # to rewrite the file
5857
59- f .seek (0 )
60- try :
58+ _ = f .seek (0 )
59+ with contextlib . suppress ( MutagenError ) :
6160 res .save (f )
62- except MutagenError :
63- pass
6461
65- f .seek (0 )
62+ _ = f .seek (0 )
6663 res = opener (f )
6764
68- f .seek (0 )
69- try :
65+ _ = f .seek (0 )
66+ with contextlib . suppress ( MutagenError ) :
7067 res .delete (f )
71- except MutagenError :
72- pass
7368
7469 # These can also save to empty files
7570 if isinstance (res , Metadata ):
7671 f = BytesIO ()
7772 res .save (f )
78- f .seek (0 )
73+ _ = f .seek (0 )
7974 opener (f )
80- f .seek (0 )
75+ _ = f .seek (0 )
8176 res .delete (f )
8277
8378
84- def run_all (data ):
79+ def run_all (data : bytes ):
8580 f = BytesIO (data )
8681 [run (opener , f ) for opener in OPENERS ]
8782
@@ -91,7 +86,7 @@ def group_crashes(result_path):
9186 and error type.
9287 """
9388
94- crash_paths = []
89+ crash_paths : list [ str ] = []
9590 pattern = os .path .join (result_path , '**' , 'crashes' , '*' )
9691 for path in glob .glob (pattern ):
9792 if os .path .splitext (path )[- 1 ] == ".txt" :
@@ -133,9 +128,9 @@ def norm_exc():
133128
134129
135130if __name__ == '__main__' :
136- import sys
137131 import glob
138132 import os
139- import traceback
133+ import sys
140134 import textwrap
135+ import traceback
141136 group_crashes (sys .argv [1 ])
0 commit comments