From 4621840aff596d02a97f906aa8b3d430748d8345126788d9c5c9a8b48d7ea996 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=C3=A9ta=20Machov=C3=A1?= Date: Wed, 25 Sep 2024 07:58:20 +0000 Subject: [PATCH] - Enable sle15_python_module_pythons. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pydub?expand=0&rev=26 --- .gitattributes | 23 +++++ .gitignore | 1 + fix-assertions.patch | 33 +++++++ pydub-0.25.1.tar.gz | 3 + python-pydub.changes | 181 +++++++++++++++++++++++++++++++++++++++ python-pydub.spec | 77 +++++++++++++++++ skip_libopenh264-7.patch | 78 +++++++++++++++++ 7 files changed, 396 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 fix-assertions.patch create mode 100644 pydub-0.25.1.tar.gz create mode 100644 python-pydub.changes create mode 100644 python-pydub.spec create mode 100644 skip_libopenh264-7.patch diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/fix-assertions.patch b/fix-assertions.patch new file mode 100644 index 0000000..c7cd30d --- /dev/null +++ b/fix-assertions.patch @@ -0,0 +1,33 @@ +From 66c1bf7813ae8621a71484fdcdf609734c0d8efd Mon Sep 17 00:00:00 2001 +From: sirfredrick +Date: Thu, 28 Dec 2023 13:37:36 -0800 +Subject: [PATCH] Fix test assertions + +assertEquals() was a deprecated alias for assertEqual() and has been +removed in Python 3.12 See https://docs.python.org/3/whatsnew/3.12.html#id3 +--- + test/test.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/test/test.py b/test/test.py +index 1965761f..2da3d0fa 100644 +--- a/test/test.py ++++ b/test/test.py +@@ -1086,7 +1086,7 @@ def test_from_file_clean_fail(self): + tmp_wav_file.flush() + self.assertRaises(CouldntDecodeError, AudioSegment.from_file, tmp_wav_file.name) + files = os.listdir(tempfile.tempdir) +- self.assertEquals(files, [os.path.basename(tmp_wav_file.name)]) ++ self.assertEqual(files, [os.path.basename(tmp_wav_file.name)]) + + if sys.platform == 'win32': + os.remove(tmp_wav_file.name) +@@ -1109,7 +1109,7 @@ def setUp(self): + + def test_split_on_silence_complete_silence(self): + seg = AudioSegment.silent(5000) +- self.assertEquals( split_on_silence(seg), [] ) ++ self.assertEqual( split_on_silence(seg), [] ) + + def test_split_on_silence_test1(self): + self.assertEqual( diff --git a/pydub-0.25.1.tar.gz b/pydub-0.25.1.tar.gz new file mode 100644 index 0000000..e50ba85 --- /dev/null +++ b/pydub-0.25.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94f423c9acc9f361203e82a204420bb8fb85731d0586ebd2c1509fbeadeabad6 +size 27555582 diff --git a/python-pydub.changes b/python-pydub.changes new file mode 100644 index 0000000..4ae74e9 --- /dev/null +++ b/python-pydub.changes @@ -0,0 +1,181 @@ +------------------------------------------------------------------- +Tue Sep 24 23:02:36 UTC 2024 - Guang Yee + +- Enable sle15_python_module_pythons. + +------------------------------------------------------------------- +Mon May 20 11:49:43 UTC 2024 - Antonio Larrosa + +- If ffmpeg_pref is defined, use it, otherwise use ffmpeg-6 or + ffmpeg-4 depening on suse_version. + +------------------------------------------------------------------- +Fri May 17 11:30:40 UTC 2024 - Antonio Larrosa + +- Build with ffmpeg-6 in TW and ffmpeg-4 in Leap + +------------------------------------------------------------------- +Mon Mar 25 04:56:28 UTC 2024 - Steve Kowalik + +- Switch to pytest macro. +- Limit to ffmpeg 5. + +------------------------------------------------------------------- +Fri Feb 16 03:31:40 UTC 2024 - Steve Kowalik + +- Add patch fix-assertions.patch: + * Fix assetion methods. +- Switch to pyproject macros. + +------------------------------------------------------------------- +Wed Dec 7 23:23:13 UTC 2022 - Matej Cepl + +- Add skip_libopenh264-7.patch which skips failing tests when + libopenh264 is not available (which is always, because the + library is in Packman). gh#jiaaro/pydub#700 + +------------------------------------------------------------------- +Wed Mar 10 20:05:05 UTC 2021 - Ben Greiner + +- Update to 0.25.1 + * Fix crashing bug in new scipy-powered EQ effects +- Release 0.25.0 + * Don't show a runtime warning about the optional ffplay + dependency being missing until someone trys to use it + * Documentation improvements + * Python 3.9 support + * Improved efficiency of loading wave files with pydub. + AudioSegment.from_file() + * Ensure pydub.AudioSegment().export() always retuns files with + a seek position at the beginning of the file + * Added more EQ effects to pydub.scipy_effects (requires scipy + to be installed) + * Fix a packaging bug where the LICENSE file was not included in + the source distribution + * Add a way to instantiate a pydub.AudioSegment() with a portion + of an audio file via pydub.AudioSegment().from_file() +- Release 0.24.1 + * Fix bug where ffmpeg errors in Python 3 are illegible + * Fix bug where split_on_silence fails when there are one or + fewer nonsilent segments + * Fix bug in fallback audioop implementation +- Release 0.24.0 + * Fix inconsistent handling of 8-bit audio + * Fix bug where certain files will fail to parse + * Fix bug where pyaudio stream is not closed on error + * Allow codecs and parameters in wav and raw export + * Fix bug in pydub.AudioSegment.from_file where supplied codec + is ignored + * Allow pydub.silence.split_on_silence to take a boolean for + keep_silence + * Fix bug where pydub.silence.split_on_silence sometimes adds + non-silence from adjacent segments + * Fix bug where pydub.AudioSegment.extract_wav_headers fails on + empty wav files + * Add new function pydub.silence.detect_leading_silence + * Support conversion between an arbitrary number of channels and + mono in pydub.AudioSegment.set_channels + * Fix several issues related to reading from filelike objects +- Drop 0001-Skip-tests-that-use-unavailable-codecs.patch merged + upstream +- Reinstate python36 build. SciPy is optional + +------------------------------------------------------------------- +Sat Feb 13 10:14:16 UTC 2021 - Dirk Müller + +- skip python 3.6 build (no scipy) + +------------------------------------------------------------------- +Tue Feb 19 19:14:45 UTC 2019 - Antonio Larrosa + +- Enable tests. Changed source to the github release, which also + removes the need to provide a copy of the LICENSE file. +- Add 0001-Skip-tests-that-use-unavailable-codecs.patch to skip + tests that use codecs not supported by the official ffmpeg package + +------------------------------------------------------------------- +Mon Feb 18 10:12:59 UTC 2019 - Antonio Larrosa + +- Update to 0.23.1 + * Fix bug in passing ffmpeg/avconv parameters for + pydub.AudioSegment.from_mp3(), pydub.AudioSegment.from_flv(), + pydub.AudioSegment.from_ogg() and pydub.AudioSegment.from_wav() + * Fix logic bug in pydub.effects.strip_silence() + +------------------------------------------------------------------- +Tue Dec 4 12:52:09 UTC 2018 - Matej Cepl + +- Remove superfluous devel dependency for noarch package + +------------------------------------------------------------------- +Wed Oct 31 11:26:43 UTC 2018 - Jan Engelhardt + +- Use noun phrase. + +------------------------------------------------------------------- +Wed Oct 31 04:48:36 UTC 2018 - Todd R + +- Update to 0.23.0 + * Add support for playback via simpleaudio + * Allow users to override the type in pydub.AudioSegment().get_array_of_samples() (PR #313) + * Fix a bug where the wrong codec was used for 8-bit audio (PR #309 - issue #308) + +------------------------------------------------------------------- +Wed Jul 11 17:18:18 UTC 2018 - alarrosa@suse.com + +- Update to 0.22.1 + * Fix pydub.utils.mediainfo_json() to work with newer, + backwards-incompatible versions of ffprobe/avprobe + +- Update to 0.22.0 + * Adds support for audio with frame rates (sample rates) of 48k and higher + (requires scipy) (PR #262, fixes #134, #237, #209) + * Adds support for PEP 519 File Path protocol (PR #252) + * Fixes a few places where handles to temporary files are kept open (PR #280) + * Add the license file to the python package to aid other packaging projects + (PR #279, fixes #274) + * Big fix for pydub.silence.detect_silence() (PR #263) + +------------------------------------------------------------------- +Thu May 10 00:03:10 UTC 2018 - toddrme2178@gmail.com + +- Update to 0.21.0 + * NOTE: Semi-counterintuitive change: using the a stride when + slicing AudioSegment instances (for example, `sound[::5000]`) + will return chunks of 5000ms (not 1ms chunks every 5000ms) + (#222) + * Debug output from ffmpeg/avlib is no longer printed to the + console unless you set up logging (see README for how to set + up logging for your converter) (#223) + * All pydub exceptions are now subclasses of + `pydub.exceptions.PydubException` + * The utilities in `pydub.silence` now accept a + `seek_step` argument which can optionally be passed to + improve the performance of silence detection (#211) + * Fix to `pydub.silence` utilities which allow you to detect + perfect silence (#233) + * Fix a bug where threaded code screws up your terminal session + due to ffmpeg inheriting the stdin from the parent process. + (#231) + * Fix a bug where a crashing programs using pydub would leave + behind their temporary files (#206) +- Use license tag + +------------------------------------------------------------------- +Wed Oct 18 16:45:45 UTC 2017 - toddrme2178@gmail.com + +- Implement single-spec version +- Update to version 0.20.0 + * See changelog at https://github.com/jiaaro/pydub/blob/v0.20.0/CHANGELOG.md + +------------------------------------------------------------------- +Sat Oct 1 18:05:47 UTC 2016 - mardnh@gmx.de + +- Update to version 0.16.5 + - upstream does not provide a changelog + +------------------------------------------------------------------- +Mon Jul 14 11:35:14 UTC 2014 - toddrme2178@gmail.com + +- - Initial version + diff --git a/python-pydub.spec b/python-pydub.spec new file mode 100644 index 0000000..0fd7cf5 --- /dev/null +++ b/python-pydub.spec @@ -0,0 +1,77 @@ +# +# spec file for package python-pydub +# +# Copyright (c) 2024 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%if 0%{?!ffmpeg_pref:1} +%if 0%{?suse_version} >= 1550 +%define ffmpeg_pref ffmpeg-6 +%else +%define ffmpeg_pref ffmpeg-4 +%endif +%endif + +%{?sle15_python_module_pythons} +Name: python-pydub +Version: 0.25.1 +Release: 0 +Summary: Audio manipulation with Python +License: MIT +URL: https://github.com/jiaaro/pydub +Source: https://github.com/jiaaro/pydub/archive/v%{version}.tar.gz#/pydub-%{version}.tar.gz +# PATCH-FIX-OPENSUSE skip_libopenh264-7.patch gh#jiaaro/pydub#700 mcepl@suse.com +# We don't have libopenh264-7 on the plain openSUSE +Patch0: skip_libopenh264-7.patch +# PATCH-FIX-UPSTREAM gh#jiaaro/pydub#769 +Patch1: fix-assertions.patch +BuildRequires: %{ffmpeg_pref} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module pytest} +BuildRequires: %{python_module scipy} +BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module wheel} +BuildRequires: fdupes +BuildConflicts: %{ffmpeg_pref}-mini-libs +BuildRequires: python-rpm-macros +Requires: %{ffmpeg_pref} +Recommends: python-scipy +Recommends: python-simpleaudio +BuildArch: noarch +%python_subpackages + +%description +A Python module to manipulate audio with a high level interface. + +%prep +%autosetup -p1 -n pydub-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%python_expand %fdupes %{buildroot}%{$python_sitelib} + +%check +export NO_OPENH264=1 +%pytest test/test.py + +%files %{python_files} +%license LICENSE +%{python_sitelib}/pydub-%{version}.dist-info +%{python_sitelib}/pydub + +%changelog diff --git a/skip_libopenh264-7.patch b/skip_libopenh264-7.patch new file mode 100644 index 0000000..f548a57 --- /dev/null +++ b/skip_libopenh264-7.patch @@ -0,0 +1,78 @@ +--- + test/test.py | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +--- a/test/test.py ++++ b/test/test.py +@@ -796,6 +796,8 @@ class AudioSegmentTests(unittest.TestCas + AudioSegment.from_file(self.mp3_file_path).export(tmp_webm_file, + format="webm") + ++ @unittest.skipIf('NO_OPENH264' in os.environ, ++ "libopenh264 not available") + @unittest.skipUnless('aac' in get_supported_decoders(), + "Unsupported codecs") + def test_export_mp4_as_ogg(self): +@@ -803,6 +805,8 @@ class AudioSegmentTests(unittest.TestCas + AudioSegment.from_file(self.mp4_file_path).export(tmp_ogg_file, + format="ogg") + ++ @unittest.skipIf('NO_OPENH264' in os.environ, ++ "libopenh264 not available") + @unittest.skipUnless('aac' in get_supported_decoders(), + "Unsupported codecs") + def test_export_mp4_as_mp3(self): +@@ -810,6 +814,8 @@ class AudioSegmentTests(unittest.TestCas + AudioSegment.from_file(self.mp4_file_path).export(tmp_mp3_file, + format="mp3") + ++ @unittest.skipIf('NO_OPENH264' in os.environ, ++ "libopenh264 not available") + @unittest.skipUnless('aac' in get_supported_decoders(), + "Unsupported codecs") + def test_export_mp4_as_wav(self): +@@ -817,6 +823,8 @@ class AudioSegmentTests(unittest.TestCas + AudioSegment.from_file(self.mp4_file_path).export(tmp_wav_file, + format="mp3") + ++ @unittest.skipIf('NO_OPENH264' in os.environ, ++ "libopenh264 not available") + @unittest.skipUnless('aac' in get_supported_decoders(), + "Unsupported codecs") + def test_export_mp4_as_mp3_with_tags(self): +@@ -830,6 +838,8 @@ class AudioSegmentTests(unittest.TestCas + format="mp3", + tags=tags_dict) + ++ @unittest.skipIf('NO_OPENH264' in os.environ, ++ "libopenh264 not available") + @unittest.skipUnless('aac' in get_supported_decoders(), + "Unsupported codecs") + def test_export_mp4_as_mp3_with_tags_raises_exception_when_tags_are_not_a_dictionary(self): +@@ -840,6 +850,8 @@ class AudioSegmentTests(unittest.TestCas + format="mp3", tags=json) + self.assertRaises(InvalidTag, func) + ++ @unittest.skipIf('NO_OPENH264' in os.environ, ++ "libopenh264 not available") + @unittest.skipUnless('aac' in get_supported_decoders(), + "Unsupported codecs") + def test_export_mp4_as_mp3_with_tags_raises_exception_when_id3version_is_wrong(self): +@@ -854,6 +866,8 @@ class AudioSegmentTests(unittest.TestCas + ) + self.assertRaises(InvalidID3TagVersion, func) + ++ @unittest.skipIf('NO_OPENH264' in os.environ, ++ "libopenh264 not available") + @unittest.skipUnless('aac' in get_supported_decoders(), + "Unsupported codecs") + def test_export_mp3_with_tags(self): +@@ -973,6 +987,8 @@ class AudioSegmentTests(unittest.TestCas + # average volume should be reduced + self.assertTrue(compressed.rms < self.seg1.rms) + ++ @unittest.skipIf('NO_OPENH264' in os.environ, ++ "libopenh264 not available") + @unittest.skipUnless('aac' in get_supported_decoders(), + "Unsupported codecs") + def test_exporting_to_ogg_uses_default_codec_when_codec_param_is_none(self):