diff --git a/src/wavinfo/__init__.py b/src/wavinfo/__init__.py index f7fc1ad..82e9cb0 100644 --- a/src/wavinfo/__init__.py +++ b/src/wavinfo/__init__.py @@ -4,5 +4,5 @@ Probe WAVE Files for iXML, Broadcast-WAVE and other metadata. __all__ = ["WavInfoReader", "WavInfoEOFError"] -from .wave_reader import WavInfoReader from .riff_parser import WavInfoEOFError +from .wave_reader import WavInfoReader diff --git a/src/wavinfo/__main__.py b/src/wavinfo/__main__.py index 5a57a6e..9d1ddf7 100644 --- a/src/wavinfo/__main__.py +++ b/src/wavinfo/__main__.py @@ -1,16 +1,16 @@ -from . import WavInfoReader - import datetime -from optparse import OptionParser -import sys -import os -import json -from enum import Enum import importlib.metadata +import json +import os +import sys from base64 import b64encode from cmd import Cmd +from enum import Enum +from optparse import OptionParser from shlex import split -from typing import List, Dict, Union +from typing import Dict, List, Union + +from . import WavInfoReader class MyJSONEncoder(json.JSONEncoder): diff --git a/src/wavinfo/rf64_parser.py b/src/wavinfo/rf64_parser.py index ccdb904..92d3937 100644 --- a/src/wavinfo/rf64_parser.py +++ b/src/wavinfo/rf64_parser.py @@ -1,7 +1,7 @@ import struct # from collections import namedtuple -from typing import NamedTuple, Dict +from typing import Dict, NamedTuple from . import riff_parser diff --git a/src/wavinfo/riff_parser.py b/src/wavinfo/riff_parser.py index 8bb8289..ab317b3 100644 --- a/src/wavinfo/riff_parser.py +++ b/src/wavinfo/riff_parser.py @@ -1,7 +1,8 @@ # from optparse import Option import struct -from .rf64_parser import parse_rf64, RF64Context -from typing import NamedTuple, Union, List, Optional +from typing import List, NamedTuple, Optional, Union + +from .rf64_parser import RF64Context, parse_rf64 class WavInfoEOFError(EOFError): diff --git a/src/wavinfo/wave_bext_reader.py b/src/wavinfo/wave_bext_reader.py index e10f723..56e7112 100644 --- a/src/wavinfo/wave_bext_reader.py +++ b/src/wavinfo/wave_bext_reader.py @@ -1,6 +1,6 @@ import struct -# from .umid_parser import UMIDParser +# from .umid_parser import UMIDParser from typing import Optional diff --git a/src/wavinfo/wave_cues_reader.py b/src/wavinfo/wave_cues_reader.py index 039832d..fbe51b5 100644 --- a/src/wavinfo/wave_cues_reader.py +++ b/src/wavinfo/wave_cues_reader.py @@ -9,10 +9,10 @@ https://www.aelius.com/njh/wavemetatools/doc/riffmci.pdf """ from dataclasses import dataclass -from .riff_parser import ChunkDescriptor +from struct import calcsize, unpack +from typing import Any, Dict, Generator, List, NamedTuple, Optional, Tuple -from struct import unpack, calcsize -from typing import Optional, Tuple, NamedTuple, List, Dict, Any, Generator +from .riff_parser import ChunkDescriptor #: Country Codes used in the RIFF standard to resolve locale. These codes #: appear in CSET and LTXT metadata. diff --git a/src/wavinfo/wave_dbmd_reader.py b/src/wavinfo/wave_dbmd_reader.py index 7336604..e471f3a 100644 --- a/src/wavinfo/wave_dbmd_reader.py +++ b/src/wavinfo/wave_dbmd_reader.py @@ -7,12 +7,11 @@ Unless otherwise stated, all ยง references here are to .. _EBU Tech 3285 Supplement 6: https://tech.ebu.ch/docs/tech/tech3285s6.pdf """ -from enum import IntEnum, Enum -from struct import unpack -from dataclasses import dataclass, asdict -from typing import List, Tuple, Any, Union - +from dataclasses import asdict, dataclass +from enum import Enum, IntEnum from io import BytesIO +from struct import unpack +from typing import Any, List, Tuple, Union class SegmentType(IntEnum): diff --git a/src/wavinfo/wave_info_reader.py b/src/wavinfo/wave_info_reader.py index 2b62ff5..9a9679d 100644 --- a/src/wavinfo/wave_info_reader.py +++ b/src/wavinfo/wave_info_reader.py @@ -1,7 +1,7 @@ -from .riff_parser import parse_chunk, ListChunkDescriptor - from typing import Optional +from .riff_parser import ListChunkDescriptor, parse_chunk + class WavInfoChunkReader: def __init__(self, f, encoding): diff --git a/src/wavinfo/wave_ixml_reader.py b/src/wavinfo/wave_ixml_reader.py index 2278fc0..4d74f9f 100644 --- a/src/wavinfo/wave_ixml_reader.py +++ b/src/wavinfo/wave_ixml_reader.py @@ -1,10 +1,10 @@ -from lxml import etree as ET import io +from enum import IntEnum # from collections import namedtuple -from typing import Optional -from enum import IntEnum -from typing import NamedTuple +from typing import NamedTuple, Optional + +from lxml import etree as ET class IXMLTrack(NamedTuple): diff --git a/src/wavinfo/wave_reader.py b/src/wavinfo/wave_reader.py index a05a0bc..bccc6e5 100644 --- a/src/wavinfo/wave_reader.py +++ b/src/wavinfo/wave_reader.py @@ -1,18 +1,16 @@ # -*- coding: utf-8 -*- -import struct import os -from typing import Optional, Generator, Any, NamedTuple - import pathlib +import struct +from typing import Any, Generator, NamedTuple, Optional - -from .riff_parser import parse_chunk, ChunkDescriptor, ListChunkDescriptor -from .wave_ixml_reader import WavIXMLFormat -from .wave_bext_reader import WavBextReader -from .wave_info_reader import WavInfoChunkReader +from .riff_parser import ChunkDescriptor, ListChunkDescriptor, parse_chunk from .wave_adm_reader import WavADMReader -from .wave_dbmd_reader import WavDolbyMetadataReader +from .wave_bext_reader import WavBextReader from .wave_cues_reader import WavCuesReader +from .wave_dbmd_reader import WavDolbyMetadataReader +from .wave_info_reader import WavInfoChunkReader +from .wave_ixml_reader import WavIXMLFormat from .wave_smpl_reader import WavSmplReader #: Calculated statistics about the audio data. diff --git a/src/wavinfo/wave_smpl_reader.py b/src/wavinfo/wave_smpl_reader.py index 483cf2f..772141d 100644 --- a/src/wavinfo/wave_smpl_reader.py +++ b/src/wavinfo/wave_smpl_reader.py @@ -1,6 +1,5 @@ import struct - -from typing import Tuple, NamedTuple, List +from typing import List, NamedTuple, Tuple class WaveSmplLoop(NamedTuple): diff --git a/src/wavinfo/wavfind.py b/src/wavinfo/wavfind.py index 7b9b348..ca64042 100644 --- a/src/wavinfo/wavfind.py +++ b/src/wavinfo/wavfind.py @@ -1,7 +1,7 @@ """ """ -from optparse import OptionParser, OptionGroup import sys +from optparse import OptionGroup, OptionParser def main(): diff --git a/tests/__init__.py b/tests/__init__.py index ba1231f..e69de29 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,42 +0,0 @@ -from . import test_wave_parsing - -from io import BytesIO -from typing import Generator -import zipfile as zf -import os.path -import os -from contextlib import contextmanager - -# class TestFileLoader: -# """ -# This guy manages the test_files archive. -# """ - -# def __init__(self, test_file_arch_name = 'archive.zip') -> None: -# self.base_path = os.path.join(os.path.dirname(__file__), "test_files") -# self.test_file_arch_name = test_file_arch_name -# self._gather_test_files_into_archive() - -# @property -# def arch_path(self): -# return os.path.join(self.base_path, self.test_file_arch_name) - -# @contextmanager -# def open(self, name) -> Generator[BytesIO]: -# z = zf.ZipFile(self.arch_path, 'r') -# member = z.open(name, 'r') -# try: -# yield member -# finally: -# zf.close() - -# def _gather_test_files_into_archive(self): -# with zf.ZipFile(self.arch_path, 'a') as zip: -# for root, _, files in os.walk(self.base_path): -# for name in files: -# if root == self.base_path and name == self.test_file_arch_name: -# continue -# else: -# p = os.path.join(root, name) -# zip.write(p) -# os.unlink(p) diff --git a/tests/test_cue.py b/tests/test_cue.py index 27e27e1..4d0a406 100644 --- a/tests/test_cue.py +++ b/tests/test_cue.py @@ -1,5 +1,5 @@ -from unittest import TestCase from glob import glob +from unittest import TestCase import wavinfo diff --git a/tests/test_dolby.py b/tests/test_dolby.py index 9ad0c4b..89eb13d 100644 --- a/tests/test_dolby.py +++ b/tests/test_dolby.py @@ -1,7 +1,7 @@ from unittest import TestCase import wavinfo -from wavinfo.wave_dbmd_reader import SegmentType, DolbyDigitalPlusMetadata +from wavinfo.wave_dbmd_reader import DolbyDigitalPlusMetadata, SegmentType class TestDolby(TestCase): diff --git a/tests/test_files/adm/test_bwf.wav b/tests/test_files/adm/test_bwf.wav new file mode 100644 index 0000000..e67e02d Binary files /dev/null and b/tests/test_files/adm/test_bwf.wav differ diff --git a/tests/test_main.py b/tests/test_main.py index 8e4e7e0..0fedd32 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -1,28 +1,26 @@ +import glob +import sys import unittest - from unittest.mock import patch from wavinfo.__main__ import main -import sys -import glob - class MainTest(unittest.TestCase): def test_empty_argv(self): with patch.object(sys, "argv", []): try: main() - except: - self.fail("main() throwing an exception") + except Exception as e: + self.fail(f"main() throwing an exception: {e}") def test_a_file(self): for path in glob.glob("tests/test_files/**/*.wav"): with patch.object(sys, "argv", ["TEST", path]): try: main() - except: - self.fail("main() throwing an exception") + except Exception as e: + self.fail(f"main() throwing an exception: {e}") def test_ixml(self): with patch.object( @@ -30,5 +28,5 @@ class MainTest(unittest.TestCase): ): try: main() - except: - self.fail("main() throwing an exception") + except Exception as e: + self.fail(f"main() throwing an exception: {e}") diff --git a/tests/test_rf64.py b/tests/test_rf64.py index 1652f68..abca12e 100644 --- a/tests/test_rf64.py +++ b/tests/test_rf64.py @@ -1,12 +1,11 @@ # import os.path import gzip from glob import glob -# from typing import Dict, Any, cast +# from typing import Dict, Any, cast from unittest import TestCase # from .utils import all_files, ffprobe - import wavinfo diff --git a/tests/test_smpl.py b/tests/test_smpl.py index 9863c22..ecec3bf 100644 --- a/tests/test_smpl.py +++ b/tests/test_smpl.py @@ -1,5 +1,5 @@ -from unittest import TestCase from glob import glob +from unittest import TestCase import wavinfo diff --git a/tests/test_walk.py b/tests/test_walk.py index eeb257a..58d0438 100644 --- a/tests/test_walk.py +++ b/tests/test_walk.py @@ -1,7 +1,7 @@ -import unittest -import wavinfo - import glob +import unittest + +import wavinfo class TestWalk(unittest.TestCase): @@ -29,8 +29,8 @@ class TestWalk(unittest.TestCase): try: for _, _, _ in info.walk(): pass - except: - self.fail(f"Failed to walk metadata in file {file}") + except Exception as e: + self.fail(f"Failed to walk metadata in file {file}: {e}") if __name__ == "__main__": diff --git a/tests/test_wave_parsing.py b/tests/test_wave_parsing.py index 7371646..fbeec15 100644 --- a/tests/test_wave_parsing.py +++ b/tests/test_wave_parsing.py @@ -1,13 +1,12 @@ import os.path from glob import glob -from typing import Dict, Any, cast - +from typing import Any, Dict, cast from unittest import TestCase -from .utils import all_files, ffprobe - import wavinfo +from .utils import all_files, ffprobe + class TestWaveInfo(TestCase): def test_sanity(self): diff --git a/tests/test_zoom_f8.py b/tests/test_zoom_f8.py index 5b09dc0..d8be22d 100644 --- a/tests/test_zoom_f8.py +++ b/tests/test_zoom_f8.py @@ -1,12 +1,6 @@ -import os.path -import sys -import json -import subprocess -from subprocess import PIPE - from unittest import TestCase -import wavinfo +# import wavinfo class TestZoomF8(TestCase): diff --git a/tests/utils.py b/tests/utils.py index fb2706f..70f2b2d 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -1,8 +1,8 @@ -import os.path -import sys -import subprocess -from subprocess import PIPE import json +import os.path +import subprocess +import sys +from subprocess import PIPE FFPROBE = "ffprobe"