mirror of
https://github.com/iluvcapra/wavinfo.git
synced 2026-10-01 17:27:42 +00:00
Added test file, Ruff pass
This commit is contained in:
@@ -4,5 +4,5 @@ Probe WAVE Files for iXML, Broadcast-WAVE and other metadata.
|
|||||||
|
|
||||||
__all__ = ["WavInfoReader", "WavInfoEOFError"]
|
__all__ = ["WavInfoReader", "WavInfoEOFError"]
|
||||||
|
|
||||||
from .wave_reader import WavInfoReader
|
|
||||||
from .riff_parser import WavInfoEOFError
|
from .riff_parser import WavInfoEOFError
|
||||||
|
from .wave_reader import WavInfoReader
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
from . import WavInfoReader
|
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
from optparse import OptionParser
|
|
||||||
import sys
|
|
||||||
import os
|
|
||||||
import json
|
|
||||||
from enum import Enum
|
|
||||||
import importlib.metadata
|
import importlib.metadata
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
from base64 import b64encode
|
from base64 import b64encode
|
||||||
from cmd import Cmd
|
from cmd import Cmd
|
||||||
|
from enum import Enum
|
||||||
|
from optparse import OptionParser
|
||||||
from shlex import split
|
from shlex import split
|
||||||
from typing import List, Dict, Union
|
from typing import Dict, List, Union
|
||||||
|
|
||||||
|
from . import WavInfoReader
|
||||||
|
|
||||||
|
|
||||||
class MyJSONEncoder(json.JSONEncoder):
|
class MyJSONEncoder(json.JSONEncoder):
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import struct
|
import struct
|
||||||
|
|
||||||
# from collections import namedtuple
|
# from collections import namedtuple
|
||||||
from typing import NamedTuple, Dict
|
from typing import Dict, NamedTuple
|
||||||
|
|
||||||
from . import riff_parser
|
from . import riff_parser
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
# from optparse import Option
|
# from optparse import Option
|
||||||
import struct
|
import struct
|
||||||
from .rf64_parser import parse_rf64, RF64Context
|
from typing import List, NamedTuple, Optional, Union
|
||||||
from typing import NamedTuple, Union, List, Optional
|
|
||||||
|
from .rf64_parser import RF64Context, parse_rf64
|
||||||
|
|
||||||
|
|
||||||
class WavInfoEOFError(EOFError):
|
class WavInfoEOFError(EOFError):
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import struct
|
import struct
|
||||||
# from .umid_parser import UMIDParser
|
|
||||||
|
|
||||||
|
# from .umid_parser import UMIDParser
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ https://www.aelius.com/njh/wavemetatools/doc/riffmci.pdf
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from dataclasses import dataclass
|
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 .riff_parser import ChunkDescriptor
|
||||||
from typing import Optional, Tuple, NamedTuple, List, Dict, Any, Generator
|
|
||||||
|
|
||||||
#: Country Codes used in the RIFF standard to resolve locale. These codes
|
#: Country Codes used in the RIFF standard to resolve locale. These codes
|
||||||
#: appear in CSET and LTXT metadata.
|
#: appear in CSET and LTXT metadata.
|
||||||
|
|||||||
@@ -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
|
.. _EBU Tech 3285 Supplement 6: https://tech.ebu.ch/docs/tech/tech3285s6.pdf
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from enum import IntEnum, Enum
|
from dataclasses import asdict, dataclass
|
||||||
from struct import unpack
|
from enum import Enum, IntEnum
|
||||||
from dataclasses import dataclass, asdict
|
|
||||||
from typing import List, Tuple, Any, Union
|
|
||||||
|
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
from struct import unpack
|
||||||
|
from typing import Any, List, Tuple, Union
|
||||||
|
|
||||||
|
|
||||||
class SegmentType(IntEnum):
|
class SegmentType(IntEnum):
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from .riff_parser import parse_chunk, ListChunkDescriptor
|
|
||||||
|
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
|
from .riff_parser import ListChunkDescriptor, parse_chunk
|
||||||
|
|
||||||
|
|
||||||
class WavInfoChunkReader:
|
class WavInfoChunkReader:
|
||||||
def __init__(self, f, encoding):
|
def __init__(self, f, encoding):
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
from lxml import etree as ET
|
|
||||||
import io
|
import io
|
||||||
|
from enum import IntEnum
|
||||||
|
|
||||||
# from collections import namedtuple
|
# from collections import namedtuple
|
||||||
from typing import Optional
|
from typing import NamedTuple, Optional
|
||||||
from enum import IntEnum
|
|
||||||
from typing import NamedTuple
|
from lxml import etree as ET
|
||||||
|
|
||||||
|
|
||||||
class IXMLTrack(NamedTuple):
|
class IXMLTrack(NamedTuple):
|
||||||
|
|||||||
@@ -1,18 +1,16 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import struct
|
|
||||||
import os
|
import os
|
||||||
from typing import Optional, Generator, Any, NamedTuple
|
|
||||||
|
|
||||||
import pathlib
|
import pathlib
|
||||||
|
import struct
|
||||||
|
from typing import Any, Generator, NamedTuple, Optional
|
||||||
|
|
||||||
|
from .riff_parser import ChunkDescriptor, ListChunkDescriptor, parse_chunk
|
||||||
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 .wave_adm_reader import WavADMReader
|
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_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
|
from .wave_smpl_reader import WavSmplReader
|
||||||
|
|
||||||
#: Calculated statistics about the audio data.
|
#: Calculated statistics about the audio data.
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import struct
|
import struct
|
||||||
|
from typing import List, NamedTuple, Tuple
|
||||||
from typing import Tuple, NamedTuple, List
|
|
||||||
|
|
||||||
|
|
||||||
class WaveSmplLoop(NamedTuple):
|
class WaveSmplLoop(NamedTuple):
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
""" """
|
""" """
|
||||||
|
|
||||||
from optparse import OptionParser, OptionGroup
|
|
||||||
import sys
|
import sys
|
||||||
|
from optparse import OptionGroup, OptionParser
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|||||||
@@ -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)
|
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
from unittest import TestCase
|
|
||||||
from glob import glob
|
from glob import glob
|
||||||
|
from unittest import TestCase
|
||||||
|
|
||||||
import wavinfo
|
import wavinfo
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
|
||||||
import wavinfo
|
import wavinfo
|
||||||
from wavinfo.wave_dbmd_reader import SegmentType, DolbyDigitalPlusMetadata
|
from wavinfo.wave_dbmd_reader import DolbyDigitalPlusMetadata, SegmentType
|
||||||
|
|
||||||
|
|
||||||
class TestDolby(TestCase):
|
class TestDolby(TestCase):
|
||||||
|
|||||||
Binary file not shown.
+8
-10
@@ -1,28 +1,26 @@
|
|||||||
|
import glob
|
||||||
|
import sys
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from unittest.mock import patch
|
from unittest.mock import patch
|
||||||
|
|
||||||
from wavinfo.__main__ import main
|
from wavinfo.__main__ import main
|
||||||
|
|
||||||
import sys
|
|
||||||
import glob
|
|
||||||
|
|
||||||
|
|
||||||
class MainTest(unittest.TestCase):
|
class MainTest(unittest.TestCase):
|
||||||
def test_empty_argv(self):
|
def test_empty_argv(self):
|
||||||
with patch.object(sys, "argv", []):
|
with patch.object(sys, "argv", []):
|
||||||
try:
|
try:
|
||||||
main()
|
main()
|
||||||
except:
|
except Exception as e:
|
||||||
self.fail("main() throwing an exception")
|
self.fail(f"main() throwing an exception: {e}")
|
||||||
|
|
||||||
def test_a_file(self):
|
def test_a_file(self):
|
||||||
for path in glob.glob("tests/test_files/**/*.wav"):
|
for path in glob.glob("tests/test_files/**/*.wav"):
|
||||||
with patch.object(sys, "argv", ["TEST", path]):
|
with patch.object(sys, "argv", ["TEST", path]):
|
||||||
try:
|
try:
|
||||||
main()
|
main()
|
||||||
except:
|
except Exception as e:
|
||||||
self.fail("main() throwing an exception")
|
self.fail(f"main() throwing an exception: {e}")
|
||||||
|
|
||||||
def test_ixml(self):
|
def test_ixml(self):
|
||||||
with patch.object(
|
with patch.object(
|
||||||
@@ -30,5 +28,5 @@ class MainTest(unittest.TestCase):
|
|||||||
):
|
):
|
||||||
try:
|
try:
|
||||||
main()
|
main()
|
||||||
except:
|
except Exception as e:
|
||||||
self.fail("main() throwing an exception")
|
self.fail(f"main() throwing an exception: {e}")
|
||||||
|
|||||||
+1
-2
@@ -1,12 +1,11 @@
|
|||||||
# import os.path
|
# import os.path
|
||||||
import gzip
|
import gzip
|
||||||
from glob import glob
|
from glob import glob
|
||||||
# from typing import Dict, Any, cast
|
|
||||||
|
|
||||||
|
# from typing import Dict, Any, cast
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
|
||||||
# from .utils import all_files, ffprobe
|
# from .utils import all_files, ffprobe
|
||||||
|
|
||||||
import wavinfo
|
import wavinfo
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
from unittest import TestCase
|
|
||||||
from glob import glob
|
from glob import glob
|
||||||
|
from unittest import TestCase
|
||||||
|
|
||||||
import wavinfo
|
import wavinfo
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -1,7 +1,7 @@
|
|||||||
import unittest
|
|
||||||
import wavinfo
|
|
||||||
|
|
||||||
import glob
|
import glob
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
import wavinfo
|
||||||
|
|
||||||
|
|
||||||
class TestWalk(unittest.TestCase):
|
class TestWalk(unittest.TestCase):
|
||||||
@@ -29,8 +29,8 @@ class TestWalk(unittest.TestCase):
|
|||||||
try:
|
try:
|
||||||
for _, _, _ in info.walk():
|
for _, _, _ in info.walk():
|
||||||
pass
|
pass
|
||||||
except:
|
except Exception as e:
|
||||||
self.fail(f"Failed to walk metadata in file {file}")
|
self.fail(f"Failed to walk metadata in file {file}: {e}")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
import os.path
|
import os.path
|
||||||
from glob import glob
|
from glob import glob
|
||||||
from typing import Dict, Any, cast
|
from typing import Any, Dict, cast
|
||||||
|
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
|
||||||
from .utils import all_files, ffprobe
|
|
||||||
|
|
||||||
import wavinfo
|
import wavinfo
|
||||||
|
|
||||||
|
from .utils import all_files, ffprobe
|
||||||
|
|
||||||
|
|
||||||
class TestWaveInfo(TestCase):
|
class TestWaveInfo(TestCase):
|
||||||
def test_sanity(self):
|
def test_sanity(self):
|
||||||
|
|||||||
@@ -1,12 +1,6 @@
|
|||||||
import os.path
|
|
||||||
import sys
|
|
||||||
import json
|
|
||||||
import subprocess
|
|
||||||
from subprocess import PIPE
|
|
||||||
|
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
|
||||||
import wavinfo
|
# import wavinfo
|
||||||
|
|
||||||
|
|
||||||
class TestZoomF8(TestCase):
|
class TestZoomF8(TestCase):
|
||||||
|
|||||||
+4
-4
@@ -1,8 +1,8 @@
|
|||||||
import os.path
|
|
||||||
import sys
|
|
||||||
import subprocess
|
|
||||||
from subprocess import PIPE
|
|
||||||
import json
|
import json
|
||||||
|
import os.path
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
from subprocess import PIPE
|
||||||
|
|
||||||
FFPROBE = "ffprobe"
|
FFPROBE = "ffprobe"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user