Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-mediafile for
openSUSE:Factory checked in at 2023-01-03 15:04:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-mediafile (Old)
and /work/SRC/openSUSE:Factory/.python-mediafile.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-mediafile"
Tue Jan 3 15:04:58 2023 rev:3 rq:1046221 version:0.11.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-mediafile/python-mediafile.changes
2022-11-01 13:42:28.551866600 +0100
+++
/work/SRC/openSUSE:Factory/.python-mediafile.new.1563/python-mediafile.changes
2023-01-03 15:05:12.726456192 +0100
@@ -1,0 +2,9 @@
+Mon Jan 2 15:27:08 UTC 2023 - Dirk Müller <[email protected]>
+
+- update to 0.11.0:
+ * List-valued properties now return None instead of an empty list when the
+ underlying tags are missing altogether.
+ * Fix a test failure that arose with Mutagen 1.46.
+ * Require Python 3.7 or later.
+
+-------------------------------------------------------------------
Old:
----
mediafile-0.10.0.tar.gz
New:
----
mediafile-0.11.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-mediafile.spec ++++++
--- /var/tmp/diff_new_pack.WppH4G/_old 2023-01-03 15:05:13.234459157 +0100
+++ /var/tmp/diff_new_pack.WppH4G/_new 2023-01-03 15:05:13.238459180 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-mediafile
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,12 +19,13 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-mediafile
-Version: 0.10.0
+Version: 0.11.0
Release: 0
Summary: Handles low-level interfacing for files' tags Wraps Mutagen to
License: MIT
URL: https://github.com/beetbox/mediafile
Source:
https://files.pythonhosted.org/packages/source/m/mediafile/mediafile-%{version}.tar.gz
+BuildRequires: %{python_module base >= 3.7}
BuildRequires: %{python_module flit >= 2}
BuildRequires: %{python_module mutagen >= 1.45}
BuildRequires: %{python_module pip}
++++++ mediafile-0.10.0.tar.gz -> mediafile-0.11.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mediafile-0.10.0/.github/workflows/build.yml
new/mediafile-0.11.0/.github/workflows/build.yml
--- old/mediafile-0.10.0/.github/workflows/build.yml 2021-08-31
14:33:42.000000000 +0200
+++ new/mediafile-0.11.0/.github/workflows/build.yml 2022-11-26
21:28:06.585693000 +0100
@@ -14,36 +14,34 @@
runs-on: ${{ matrix.os }}
strategy:
matrix:
- tox-env: [py36-test, py37-test, py38-test, py39-test,
- pypy-test]
+ tox-env: [py37-test, py38-test, py39-test,
+ py310-test, pypy-test]
os: [ubuntu-latest, windows-latest]
# Only test on a couple of versions on Windows.
exclude:
- os: windows-latest
- tox-env: py36-test
- - os: windows-latest
tox-env: py37-test
- os: windows-latest
tox-env: pypy-test
# Python interpreter versions. :/
include:
- - tox-env: py36-test
- python: 3.6
- tox-env: py37-test
- python: 3.7
+ python: '3.7'
- tox-env: py38-test
- python: 3.8
+ python: '3.8'
- tox-env: py39-test
- python: 3.9
+ python: '3.9'
+ - tox-env: py310-test
+ python: '3.10'
- tox-env: pypy-test
- python: pypy3
+ python: pypy3.9
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python }}
- uses: actions/setup-python@v1
+ uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
- name: Install Tox
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mediafile-0.10.0/.gitignore
new/mediafile-0.11.0/.gitignore
--- old/mediafile-0.10.0/.gitignore 2016-11-27 02:46:20.000000000 +0100
+++ new/mediafile-0.11.0/.gitignore 2022-11-26 21:28:06.586575700 +0100
@@ -74,6 +74,7 @@
# virtualenv
venv/
ENV/
+.venv/
# Spyder project settings
.spyderproject
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mediafile-0.10.0/.readthedocs.yaml
new/mediafile-0.11.0/.readthedocs.yaml
--- old/mediafile-0.10.0/.readthedocs.yaml 1970-01-01 01:00:00.000000000
+0100
+++ new/mediafile-0.11.0/.readthedocs.yaml 2022-11-26 21:28:06.586685200
+0100
@@ -0,0 +1,14 @@
+version: 2
+
+build:
+ os: ubuntu-20.04
+ tools:
+ python: "3.9"
+
+sphinx:
+ configuration: docs/conf.py
+
+python:
+ install:
+ - method: pip
+ path: .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mediafile-0.10.0/PKG-INFO
new/mediafile-0.11.0/PKG-INFO
--- old/mediafile-0.10.0/PKG-INFO 1970-01-01 01:00:00.000000000 +0100
+++ new/mediafile-0.11.0/PKG-INFO 1970-01-01 01:00:00.000000000 +0100
@@ -1,23 +1,22 @@
Metadata-Version: 2.1
Name: mediafile
-Version: 0.10.0
+Version: 0.11.0
Summary: Handles low-level interfacing for files' tags. Wraps Mutagen to
Home-page: https://github.com/beetbox/mediafile
Author: Adrian Sampson
Author-email: [email protected]
-Requires-Python: >=3.6
+Requires-Python: >=3.7
Description-Content-Type: text/x-rst
Classifier: Topic :: Multimedia :: Sound/Audio
Classifier: License :: OSI Approved :: MIT License
Classifier: Environment :: Web Environment
-Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Dist: six>=1.9
-Requires-Dist: mutagen>=1.45
+Requires-Dist: mutagen>=1.46
Requires-Dist: tox ; extra == "test"
Provides-Extra: test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mediafile-0.10.0/docs/conf.py
new/mediafile-0.11.0/docs/conf.py
--- old/mediafile-0.10.0/docs/conf.py 2022-10-21 19:42:01.103196000 +0200
+++ new/mediafile-0.11.0/docs/conf.py 2022-12-15 19:54:10.113947600 +0100
@@ -17,8 +17,8 @@
copyright = '2016, the beets project'
author = 'the beets project'
-version = '0.10'
-release = '0.10.0'
+version = '0.11'
+release = '0.11.0'
pygments_style = 'sphinx'
htmlhelp_basename = 'mediafiledoc'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mediafile-0.10.0/docs/index.rst
new/mediafile-0.11.0/docs/index.rst
--- old/mediafile-0.10.0/docs/index.rst 2022-08-21 01:30:30.946122600 +0200
+++ new/mediafile-0.11.0/docs/index.rst 2022-11-26 21:28:53.746066300 +0100
@@ -135,6 +135,18 @@
Changelog
---------
+v0.11.0
+'''''''
+
+- List-valued properties now return ``None`` instead of an empty list when the
+ underlying tags are missing altogether.
+
+v0.10.1
+'''''''
+
+- Fix a test failure that arose with Mutagen 1.46.
+- Require Python 3.7 or later.
+
v0.10.0
'''''''
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mediafile-0.10.0/mediafile.py
new/mediafile-0.11.0/mediafile.py
--- old/mediafile-0.10.0/mediafile.py 2022-10-21 19:42:14.461887400 +0200
+++ new/mediafile-0.11.0/mediafile.py 2022-12-15 19:53:57.107631000 +0100
@@ -59,7 +59,7 @@
import traceback
-__version__ = '0.10.0'
+__version__ = '0.11.0'
__all__ = ['UnreadableFileError', 'FileTypeError', 'MediaFile']
log = logging.getLogger(__name__)
@@ -600,8 +600,8 @@
object to each.
Subclasses may overwrite ``fetch`` and ``store``. ``fetch`` must
- return a (possibly empty) list and ``store`` receives a serialized
- list of values as the second argument.
+ return a (possibly empty) list or `None` if the tag does not exist.
+ ``store`` receives a serialized list of values as the second argument.
The `serialize` and `deserialize` methods (from the base
`StorageStyle`) are still called with individual values. This class
@@ -610,15 +610,23 @@
def get(self, mutagen_file):
"""Get the first value in the field's value list.
"""
+ values = self.get_list(mutagen_file)
+ if values is None:
+ return None
+
try:
- return self.get_list(mutagen_file)[0]
+ return values[0]
except IndexError:
return None
def get_list(self, mutagen_file):
"""Get a list of all values for the field using this style.
"""
- return [self.deserialize(item) for item in self.fetch(mutagen_file)]
+ raw_values = self.fetch(mutagen_file)
+ if raw_values is None:
+ return None
+
+ return [self.deserialize(item) for item in raw_values]
def fetch(self, mutagen_file):
"""Get the list of raw (serialized) values.
@@ -626,19 +634,27 @@
try:
return mutagen_file[self.key]
except KeyError:
- return []
+ return None
def set(self, mutagen_file, value):
"""Set an individual value as the only value for the field using
this style.
"""
- self.set_list(mutagen_file, [value])
+ if value is None:
+ self.store(mutagen_file, None)
+ else:
+ self.set_list(mutagen_file, [value])
def set_list(self, mutagen_file, values):
"""Set all values for the field using this style. `values`
should be an iterable.
"""
- self.store(mutagen_file, [self.serialize(value) for value in values])
+ if values is None:
+ self.delete(mutagen_file)
+ else:
+ self.store(
+ mutagen_file, [self.serialize(value) for value in values]
+ )
def store(self, mutagen_file, values):
"""Set the list of all raw (serialized) values for this field.
@@ -1317,7 +1333,7 @@
values = style.get_list(mediafile.mgfile)
if values:
return [_safe_cast(self.out_type, value) for value in values]
- return []
+ return None
def __set__(self, mediafile, values):
for style in self.styles(mediafile.mgfile):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mediafile-0.10.0/pyproject.toml
new/mediafile-0.11.0/pyproject.toml
--- old/mediafile-0.10.0/pyproject.toml 2021-08-31 14:09:34.000000000 +0200
+++ new/mediafile-0.11.0/pyproject.toml 2022-11-26 21:28:06.589150700 +0100
@@ -10,14 +10,13 @@
description-file = "README.rst"
requires = [
"six>=1.9",
- "mutagen>=1.45",
+ "mutagen>=1.46",
]
-requires-python = ">=3.6"
+requires-python = ">=3.7"
classifiers = [
'Topic :: Multimedia :: Sound/Audio',
'License :: OSI Approved :: MIT License',
'Environment :: Web Environment',
- 'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mediafile-0.10.0/test/test_mediafile.py
new/mediafile-0.11.0/test/test_mediafile.py
--- old/mediafile-0.10.0/test/test_mediafile.py 2022-03-30 13:41:40.412092200
+0200
+++ new/mediafile-0.11.0/test/test_mediafile.py 2022-11-26 21:28:06.589732000
+0100
@@ -160,7 +160,7 @@
mediafile.save()
mediafile = MediaFile(mediafile.filename)
- self.assertEqual(len(mediafile.images), 0)
+ self.assertIsNone(mediafile.images)
def test_guess_cover(self):
mediafile = self._mediafile_fixture('image')
@@ -1001,7 +1001,7 @@
extension = 'wav'
audio_properties = {
'length': 1.0,
- 'bitrate': 88200,
+ 'bitrate': 705600,
'bitrate_mode': '',
'encoder_info': '',
'encoder_settings': '',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mediafile-0.10.0/tox.ini new/mediafile-0.11.0/tox.ini
--- old/mediafile-0.10.0/tox.ini 2021-08-31 14:33:42.000000000 +0200
+++ new/mediafile-0.11.0/tox.ini 2022-11-26 21:28:06.590905000 +0100
@@ -4,7 +4,7 @@
# and then run "tox" from this directory.
[tox]
-envlist = py{37,38}-test, py38-flake8
+envlist = py310-test, py310-flake8
isolated_build = True
[tox:.package]
@@ -12,8 +12,7 @@
[_test]
deps =
- nose
- nose-show-skipped
+ pytest
[_flake8]
deps =
@@ -23,15 +22,14 @@
files = mediafile.py test setup.py
[testenv]
-passenv =
- NOSE_SHOW_SKIPPED # Undocumented feature of nose-show-skipped.
deps =
{test,cov}: {[_test]deps}
- py{36,37,38,39}-flake8: {[_flake8]deps}
+ py{36,37,38,39,310,311}-flake8: {[_flake8]deps}
commands =
- cov: nosetests --with-coverage {posargs}
- py3{6,7,8,9}-test: python -bb -m nose {posargs}
+ py3{6,7,8,9,10,11}-test: python -bb -m pytest {posargs}
py36-flake8: flake8 --min-version 3.6 {posargs} {[_flake8]files}
py37-flake8: flake8 --min-version 3.7 {posargs} {[_flake8]files}
py38-flake8: flake8 --min-version 3.8 {posargs} {[_flake8]files}
py39-flake8: flake8 --min-version 3.9 {posargs} {[_flake8]files}
+ py310-flake8: flake8 --min-version 3.10 {posargs} {[_flake8]files}
+ py311-flake8: flake8 --min-version 3.11 {posargs} {[_flake8]files}