Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-pymediainfo for openSUSE:Factory checked in at 2022-12-03 10:03:39 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pymediainfo (Old) and /work/SRC/openSUSE:Factory/.python-pymediainfo.new.1835 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pymediainfo" Sat Dec 3 10:03:39 2022 rev:13 rq:1039617 version:6.0.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-pymediainfo/python-pymediainfo.changes 2021-05-02 18:39:22.444114827 +0200 +++ /work/SRC/openSUSE:Factory/.python-pymediainfo.new.1835/python-pymediainfo.changes 2022-12-03 10:03:52.515319891 +0100 @@ -1,0 +2,16 @@ +Fri Dec 2 16:03:09 UTC 2022 - Luigi Baldoni <aloi...@gmx.com> + +- Update to version 6.0.1 + * doc: improve description of parse()'s full parameter + version 6.0.0 + Breaking changes: + * warning Drop support for Python 3.6 + New features: + * Add support for Python 3.10 and 3.11 + * tests: start a local HTTP server instead of relying on + GitHub, this means the test suite can now run without + Internet access + Bug fixes: + * Fix doc build with recent sphinx versions + +------------------------------------------------------------------- Old: ---- pymediainfo-5.1.0.tar.gz New: ---- pymediainfo-6.0.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pymediainfo.spec ++++++ --- /var/tmp/diff_new_pack.zBTweF/_old 2022-12-03 10:03:53.023322714 +0100 +++ /var/tmp/diff_new_pack.zBTweF/_new 2022-12-03 10:03:53.031322758 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-pymediainfo # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ %define skip_python2 1 Name: python-pymediainfo -Version: 5.1.0 +Version: 6.0.1 Release: 0 Summary: Python wrapper for the mediainfo library License: MIT @@ -51,12 +51,12 @@ %python_expand %fdupes -s %{buildroot}%{$python_sitelib} %check -export LANG=en_US.UTF-8 -%pytest -k 'not test_parse_url and not test_thread_safety' +%pytest %files %{python_files} %doc README.rst %license LICENSE -%{python_sitelib}/* +%{python_sitelib}/pymediainfo +%{python_sitelib}/pymediainfo-%{version}-py%{python_version}.egg-info %changelog ++++++ pymediainfo-5.1.0.tar.gz -> pymediainfo-6.0.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymediainfo-5.1.0/PKG-INFO new/pymediainfo-6.0.1/PKG-INFO --- old/pymediainfo-5.1.0/PKG-INFO 2021-05-02 00:11:44.578204400 +0200 +++ new/pymediainfo-6.0.1/PKG-INFO 2022-11-26 00:28:43.272776800 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: pymediainfo -Version: 5.1.0 +Version: 6.0.1 Summary: A Python wrapper for the mediainfo library. Home-page: https://github.com/sbraz/pymediainfo Author: Louis Sautier @@ -8,40 +8,12 @@ License: MIT Project-URL: Documentation, https://pymediainfo.readthedocs.io/ Project-URL: Bugs, https://github.com/sbraz/pymediainfo/issues -Description: pymediainfo - ----------- - - .. image:: https://img.shields.io/pypi/v/pymediainfo.svg - :target: https://pypi.org/project/pymediainfo - - .. image:: https://img.shields.io/pypi/pyversions/pymediainfo.svg - :target: https://pypi.org/project/pymediainfo - - .. image:: https://repology.org/badge/tiny-repos/python:pymediainfo.svg - :target: https://repology.org/metapackage/python:pymediainfo - - .. image:: https://img.shields.io/pypi/implementation/pymediainfo.svg - :target: https://pypi.org/project/pymediainfo - - .. image:: https://travis-ci.com/sbraz/pymediainfo.svg?branch=master - :target: https://travis-ci.com/sbraz/pymediainfo - - .. image:: https://ci.appveyor.com/api/projects/status/g15a2daem1oub57n/branch/master?svg=true - :target: https://ci.appveyor.com/project/sbraz/pymediainfo - - - This small package is a wrapper around the MediaInfo library. - - It works on Linux, Mac OS X and Windows and is tested with Python 3.6, 3.7, 3.8, 3.9 and PyPy3. - - See https://pymediainfo.readthedocs.io/ for more information. - -Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable -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 :: 3.11 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy @@ -49,5 +21,32 @@ Classifier: Operating System :: MacOS :: MacOS X Classifier: Operating System :: Microsoft :: Windows Classifier: License :: OSI Approved :: MIT License -Requires-Python: >=3.6 +Requires-Python: >=3.7 Description-Content-Type: text/x-rst; charset=UTF-8 +License-File: LICENSE +License-File: AUTHORS + +pymediainfo +----------- + +.. image:: https://img.shields.io/pypi/v/pymediainfo.svg + :target: https://pypi.org/project/pymediainfo + +.. image:: https://img.shields.io/pypi/pyversions/pymediainfo.svg + :target: https://pypi.org/project/pymediainfo + +.. image:: https://repology.org/badge/tiny-repos/python:pymediainfo.svg + :target: https://repology.org/metapackage/python:pymediainfo + +.. image:: https://img.shields.io/pypi/implementation/pymediainfo.svg + :target: https://pypi.org/project/pymediainfo + +.. image:: https://ci.appveyor.com/api/projects/status/g15a2daem1oub57n/branch/master?svg=true + :target: https://ci.appveyor.com/project/sbraz/pymediainfo + + +This small package is a wrapper around the MediaInfo library. + +It works on Linux, Mac OS X and Windows and is tested with Python 3.7 to 3.11 and PyPy3. + +See https://pymediainfo.readthedocs.io/ for more information. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymediainfo-5.1.0/README.rst new/pymediainfo-6.0.1/README.rst --- old/pymediainfo-5.1.0/README.rst 2021-05-02 00:11:29.000000000 +0200 +++ new/pymediainfo-6.0.1/README.rst 2022-11-26 00:27:03.000000000 +0100 @@ -13,15 +13,12 @@ .. image:: https://img.shields.io/pypi/implementation/pymediainfo.svg :target: https://pypi.org/project/pymediainfo -.. image:: https://travis-ci.com/sbraz/pymediainfo.svg?branch=master - :target: https://travis-ci.com/sbraz/pymediainfo - .. image:: https://ci.appveyor.com/api/projects/status/g15a2daem1oub57n/branch/master?svg=true :target: https://ci.appveyor.com/project/sbraz/pymediainfo This small package is a wrapper around the MediaInfo library. -It works on Linux, Mac OS X and Windows and is tested with Python 3.6, 3.7, 3.8, 3.9 and PyPy3. +It works on Linux, Mac OS X and Windows and is tested with Python 3.7 to 3.11 and PyPy3. See https://pymediainfo.readthedocs.io/ for more information. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymediainfo-5.1.0/appveyor.yml new/pymediainfo-6.0.1/appveyor.yml --- old/pymediainfo-5.1.0/appveyor.yml 2021-05-02 00:11:29.000000000 +0200 +++ new/pymediainfo-6.0.1/appveyor.yml 2022-11-26 00:27:03.000000000 +0100 @@ -1,30 +1,78 @@ -image: - # Currently required to support Python 3.9 - - Visual Studio 2019 environment: + LINUX_IMAGE: &linux_image Ubuntu2004 + MACOS_IMAGE: &macos_image macos-catalina + WINDOWS_IMAGE: &windows_image Visual Studio 2022 + LIBZEN_VERSION: 0.4.39 + MEDIAINFO_VERSION: 22.09 + UBUNTU_VERSION: 20.04 + QA_PYTHON_VERSION: 3.11 + # AppVeyor doesn't offer Python 3.11 on macOS yet + # https://github.com/appveyor/ci/issues/3858 + DEPLOY_TOXENV: py310 + PYPY_URL: https://downloads.python.org/pypy/pypy3.9-v7.3.9-linux64.tar.bz2 # Work around https://github.com/tox-dev/tox/issues/1550 PYTHONIOENCODING: utf-8 - MEDIAINFO_VERSION: 21.03 + TOX_PARALLEL_NO_SPINNER: 1 + TWINE_USERNAME: "__token__" TWINE_PASSWORD: - secure: /EO8CxTxhQVNsGNZZvU51jjHwPW524rgddNlwOAyLoA= + secure: Jp2QpmAii1mmAXmotdXmPx5q679oMcRolziuu9m2pawkvOnRJtWMsI4uWiTiSbiw+HMbyyWwVpy+FiaPsHZxtM863PNNJidW1WDam4kn8EM+rznjgZfO9NSCcwZJU5jcTYCwuXo3+FnVNK5rvQ8QJ+Zu6WzH1Ysb+uJSz8e6xt7d7hoZbb9VH5bJC7tYrw+bH+TfA9juVpIYfCavozLLTDLqTcvPfJ+LXMPbiZO+oOztNsLRsviH2QAPXaLspXvCr6qUVH3A84KCdfSXCOZG0g/eYUZ6ilMLESe7DrYZrRc= matrix: - - PYTHON: "C:/Python36" - TOXENV: py36 - - PYTHON: "C:/Python37" - TOXENV: py37 - - PYTHON: "C:/Python38" - TOXENV: py38 - - PYTHON: "C:/Python39" - TOXENV: py39 - - PYTHON: "C:/Python36-x64" - TOXENV: py36 - - PYTHON: "C:/Python37-x64" - TOXENV: py37 - - PYTHON: "C:/Python38-x64" - TOXENV: py38 - - PYTHON: "C:/Python39-x64" - TOXENV: py39 -install: + - TOXENV: docs,black,flake8,isort,mypy,pylint + APPVEYOR_BUILD_WORKER_IMAGE: *linux_image + - TOXENV: pypy3 + APPVEYOR_BUILD_WORKER_IMAGE: *linux_image + - TOXENV: py37 + APPVEYOR_BUILD_WORKER_IMAGE: *linux_image + - TOXENV: py38 + APPVEYOR_BUILD_WORKER_IMAGE: *linux_image + - TOXENV: py39 + APPVEYOR_BUILD_WORKER_IMAGE: *linux_image + - TOXENV: py310 + APPVEYOR_BUILD_WORKER_IMAGE: *linux_image + - TOXENV: py311 + APPVEYOR_BUILD_WORKER_IMAGE: *linux_image + - TOXENV: py38 + APPVEYOR_BUILD_WORKER_IMAGE: *macos_image + - TOXENV: py39 + APPVEYOR_BUILD_WORKER_IMAGE: *macos_image + - TOXENV: py310 + APPVEYOR_BUILD_WORKER_IMAGE: *macos_image + - TOXENV: py37 + PYTHON: "C:/Python37" + APPVEYOR_BUILD_WORKER_IMAGE: *windows_image + - TOXENV: py37 + PYTHON: "C:/Python37-x64" + APPVEYOR_BUILD_WORKER_IMAGE: *windows_image + - TOXENV: py38 + PYTHON: "C:/Python38" + APPVEYOR_BUILD_WORKER_IMAGE: *windows_image + - TOXENV: py38 + PYTHON: "C:/Python38-x64" + APPVEYOR_BUILD_WORKER_IMAGE: *windows_image + - TOXENV: py39 + PYTHON: "C:/Python39" + APPVEYOR_BUILD_WORKER_IMAGE: *windows_image + - TOXENV: py39 + PYTHON: "C:/Python39-x64" + APPVEYOR_BUILD_WORKER_IMAGE: *windows_image + - TOXENV: py310 + PYTHON: "C:/Python310" + APPVEYOR_BUILD_WORKER_IMAGE: *windows_image + - TOXENV: py310 + PYTHON: "C:/Python310-x64" + APPVEYOR_BUILD_WORKER_IMAGE: *windows_image + - TOXENV: py311 + PYTHON: "C:/Python311" + APPVEYOR_BUILD_WORKER_IMAGE: *windows_image + - TOXENV: py311 + PYTHON: "C:/Python311-x64" + APPVEYOR_BUILD_WORKER_IMAGE: *windows_image +for: +- + matrix: + only: + - APPVEYOR_BUILD_WORKER_IMAGE: *windows_image + install: - "SET PATH=%PYTHON%;%PYTHON%/Scripts;%PATH%" - "python --version" - "IF %PYTHON:~-4% == -x64 (SET ARCH=x64) ELSE (SET ARCH=i386)" @@ -36,10 +84,86 @@ - ps: "Copy-Item -Path MediaInfo.dll -Destination ${Env:PYTHON}" - "move MediaInfo.dll pymediainfo" - "move Developers\\License.html docs" - - "pip install --upgrade setuptools tox twine wheel" -build_script: - - "python setup.py bdist_wheel" -test_script: - - "tox" -deploy_script: - - ps: If ($env:APPVEYOR_REPO_TAG -eq "true") { Invoke-Expression "twine upload --skip-existing -u sbraz dist/*.whl" } + - "pip install tox" + build: off + test_script: + - "tox" + deploy_script: + - ps: | + If (($env:APPVEYOR_REPO_TAG -eq "true") -and ($env:TOXENV -eq $env:DEPLOY_TOXENV)) { + pip install twine wheel + python setup.py bdist_wheel + Invoke-Expression "twine upload --skip-existing dist/*.whl" + } +- + matrix: + only: + - APPVEYOR_BUILD_WORKER_IMAGE: *macos_image + install: | + set -eo pipefail + PYTHON_VERSION="$(sed -E 's/^py(3)(.*)$/\1.\2/' <<< "$TOXENV")" + source "${HOME}/venv${PYTHON_VERSION}/bin/activate" + pip install tox + curl https://mediaarea.net/download/binary/libmediainfo0/${MEDIAINFO_VERSION}/MediaInfo_DLL_${MEDIAINFO_VERSION}_Mac_x86_64+arm64.tar.bz2 \ + | tar xj MediaInfoLib/libmediainfo.0.dylib MediaInfoLib/License.html + # Required for tests to pass with tox + cp MediaInfoLib/libmediainfo.0.dylib /usr/local/lib/ + build: off + test_script: + - "tox" + deploy_script: | + set -eo pipefail + if [[ $APPVEYOR_REPO_TAG == "true" && $TOXENV == $DEPLOY_TOXENV ]]; then + mv MediaInfoLib/libmediainfo.0.dylib pymediainfo + mv MediaInfoLib/License.html docs + pip install twine wheel + python setup.py bdist_wheel + twine upload --skip-existing dist/*.whl + fi +- + matrix: + only: + - APPVEYOR_BUILD_WORKER_IMAGE: *linux_image + install: | + set -eo pipefail + if [[ $TOXENV =~ doc.* ]]; then + source "${HOME}/venv${QA_PYTHON_VERSION}/bin/activate" + pip install tox + else + if [[ $TOXENV == pypy3 ]]; then + pushd /tmp + curl -sS "$PYPY_URL" | tar xj + PATH="$(pwd)/pypy3.9-v7.3.9-linux64/bin/:$PATH" + python -m ensurepip + popd + else + PYTHON_VERSION="$(sed -E 's/^py(3)(.*)$/\1.\2/' <<< "$TOXENV")" + source "${HOME}/venv${PYTHON_VERSION}/bin/activate" + fi + # "python -m pip" will work with the unpacked PyPy too, "pip" won't + python -m pip install tox + pushd /tmp + libzen_deb=libzen0v5_${LIBZEN_VERSION}-1_amd64.xUbuntu_${UBUNTU_VERSION}.deb + mediainfo_deb=libmediainfo0v5_${MEDIAINFO_VERSION}-1_amd64.xUbuntu_${UBUNTU_VERSION}.deb + curl -O "https://mediaarea.net/download/binary/libzen0/${LIBZEN_VERSION}/${libzen_deb}" + curl -O "https://mediaarea.net/download/binary/libmediainfo0/${MEDIAINFO_VERSION}/${mediainfo_deb}" + sudo apt-get -y install libmms0 + sudo dpkg -i "${libzen_deb}" "${mediainfo_deb}" + popd + fi + build: off + test_script: | + if [[ $TOXENV =~ doc.* ]]; then + tox -p + else + # We want to see the progression of the tests so we can't run + # tox environments in parallel + tox + fi + deploy_script: | + set -eo pipefail + if [[ $APPVEYOR_REPO_TAG == "true" && $TOXENV == $DEPLOY_TOXENV ]]; then + pip install twine + python setup.py sdist + twine upload --skip-existing dist/*.gz + fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymediainfo-5.1.0/docs/conf.py new/pymediainfo-6.0.1/docs/conf.py --- old/pymediainfo-5.1.0/docs/conf.py 2021-05-02 00:11:29.000000000 +0200 +++ new/pymediainfo-6.0.1/docs/conf.py 2022-11-26 00:27:03.000000000 +0100 @@ -80,7 +80,7 @@ # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. -language = None +language = "en" # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymediainfo-5.1.0/pylintrc new/pymediainfo-6.0.1/pylintrc --- old/pymediainfo-5.1.0/pylintrc 2021-05-02 00:11:29.000000000 +0200 +++ new/pymediainfo-6.0.1/pylintrc 2022-11-26 00:27:03.000000000 +0100 @@ -60,85 +60,7 @@ # --enable=similarities". If you want to run only the classes checker, but have # no Warning level messages displayed, use "--disable=all --enable=classes # --disable=W". -disable=print-statement, - parameter-unpacking, - unpacking-in-except, - old-raise-syntax, - backtick, - long-suffix, - old-ne-operator, - old-octal-literal, - import-star-module-level, - non-ascii-bytes-literal, - raw-checker-failed, - bad-inline-option, - locally-disabled, - file-ignored, - suppressed-message, - useless-suppression, - deprecated-pragma, - use-symbolic-message-instead, - apply-builtin, - basestring-builtin, - buffer-builtin, - cmp-builtin, - coerce-builtin, - execfile-builtin, - file-builtin, - long-builtin, - raw_input-builtin, - reduce-builtin, - standarderror-builtin, - unicode-builtin, - xrange-builtin, - coerce-method, - delslice-method, - getslice-method, - setslice-method, - no-absolute-import, - old-division, - dict-iter-method, - dict-view-method, - next-method-called, - metaclass-assignment, - indexing-exception, - raising-string, - reload-builtin, - oct-method, - hex-method, - nonzero-method, - cmp-method, - input-builtin, - round-builtin, - intern-builtin, - unichr-builtin, - map-builtin-not-iterating, - zip-builtin-not-iterating, - range-builtin-not-iterating, - filter-builtin-not-iterating, - using-cmp-argument, - eq-without-hash, - div-method, - idiv-method, - rdiv-method, - exception-message-attribute, - invalid-str-codec, - sys-max-int, - bad-python3-import, - deprecated-string-function, - deprecated-str-translate-call, - deprecated-itertools-function, - deprecated-types-field, - next-method-defined, - dict-items-not-iterating, - dict-keys-not-iterating, - dict-values-not-iterating, - deprecated-operator-function, - deprecated-urllib-function, - xreadlines-attribute, - deprecated-sys-function, - exception-escape, - comprehension-escape +disable=consider-using-f-string # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymediainfo-5.1.0/pymediainfo/__init__.py new/pymediainfo-6.0.1/pymediainfo/__init__.py --- old/pymediainfo-5.1.0/pymediainfo/__init__.py 2021-05-02 00:11:29.000000000 +0200 +++ new/pymediainfo-6.0.1/pymediainfo/__init__.py 2022-11-26 00:27:03.000000000 +0100 @@ -386,7 +386,7 @@ A higher value will yield more precise results in some cases but will also increase parsing time. :param bool full: display additional tags, including computer-readable values - for sizes and durations. + for sizes and durations, corresponds to the CLI's ``--Full``/``-f`` parameter. :param bool legacy_stream_display: display additional information about streams. :param dict mediainfo_options: additional options that will be passed to the `MediaInfo_Option` function, for example: ``{"Language": "raw"}``. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymediainfo-5.1.0/pymediainfo.egg-info/PKG-INFO new/pymediainfo-6.0.1/pymediainfo.egg-info/PKG-INFO --- old/pymediainfo-5.1.0/pymediainfo.egg-info/PKG-INFO 2021-05-02 00:11:44.000000000 +0200 +++ new/pymediainfo-6.0.1/pymediainfo.egg-info/PKG-INFO 2022-11-26 00:28:42.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: pymediainfo -Version: 5.1.0 +Version: 6.0.1 Summary: A Python wrapper for the mediainfo library. Home-page: https://github.com/sbraz/pymediainfo Author: Louis Sautier @@ -8,40 +8,12 @@ License: MIT Project-URL: Documentation, https://pymediainfo.readthedocs.io/ Project-URL: Bugs, https://github.com/sbraz/pymediainfo/issues -Description: pymediainfo - ----------- - - .. image:: https://img.shields.io/pypi/v/pymediainfo.svg - :target: https://pypi.org/project/pymediainfo - - .. image:: https://img.shields.io/pypi/pyversions/pymediainfo.svg - :target: https://pypi.org/project/pymediainfo - - .. image:: https://repology.org/badge/tiny-repos/python:pymediainfo.svg - :target: https://repology.org/metapackage/python:pymediainfo - - .. image:: https://img.shields.io/pypi/implementation/pymediainfo.svg - :target: https://pypi.org/project/pymediainfo - - .. image:: https://travis-ci.com/sbraz/pymediainfo.svg?branch=master - :target: https://travis-ci.com/sbraz/pymediainfo - - .. image:: https://ci.appveyor.com/api/projects/status/g15a2daem1oub57n/branch/master?svg=true - :target: https://ci.appveyor.com/project/sbraz/pymediainfo - - - This small package is a wrapper around the MediaInfo library. - - It works on Linux, Mac OS X and Windows and is tested with Python 3.6, 3.7, 3.8, 3.9 and PyPy3. - - See https://pymediainfo.readthedocs.io/ for more information. - -Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable -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 :: 3.11 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy @@ -49,5 +21,32 @@ Classifier: Operating System :: MacOS :: MacOS X Classifier: Operating System :: Microsoft :: Windows Classifier: License :: OSI Approved :: MIT License -Requires-Python: >=3.6 +Requires-Python: >=3.7 Description-Content-Type: text/x-rst; charset=UTF-8 +License-File: LICENSE +License-File: AUTHORS + +pymediainfo +----------- + +.. image:: https://img.shields.io/pypi/v/pymediainfo.svg + :target: https://pypi.org/project/pymediainfo + +.. image:: https://img.shields.io/pypi/pyversions/pymediainfo.svg + :target: https://pypi.org/project/pymediainfo + +.. image:: https://repology.org/badge/tiny-repos/python:pymediainfo.svg + :target: https://repology.org/metapackage/python:pymediainfo + +.. image:: https://img.shields.io/pypi/implementation/pymediainfo.svg + :target: https://pypi.org/project/pymediainfo + +.. image:: https://ci.appveyor.com/api/projects/status/g15a2daem1oub57n/branch/master?svg=true + :target: https://ci.appveyor.com/project/sbraz/pymediainfo + + +This small package is a wrapper around the MediaInfo library. + +It works on Linux, Mac OS X and Windows and is tested with Python 3.7 to 3.11 and PyPy3. + +See https://pymediainfo.readthedocs.io/ for more information. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymediainfo-5.1.0/setup.cfg new/pymediainfo-6.0.1/setup.cfg --- old/pymediainfo-5.1.0/setup.cfg 2021-05-02 00:11:44.578204400 +0200 +++ new/pymediainfo-6.0.1/setup.cfg 2022-11-26 00:28:43.272776800 +0100 @@ -15,7 +15,6 @@ [tool:pytest] addopts = -vv -r a -markers = internet: tests that require Internet access [bdist_wheel] universal = 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymediainfo-5.1.0/setup.py new/pymediainfo-6.0.1/setup.py --- old/pymediainfo-5.1.0/setup.py 2021-05-02 00:11:29.000000000 +0200 +++ new/pymediainfo-6.0.1/setup.py 2022-11-26 00:27:03.000000000 +0100 @@ -50,17 +50,18 @@ license='MIT', data_files=data_files, use_scm_version=True, - python_requires=">=3.6", + python_requires=">=3.7", setup_requires=["setuptools_scm"], install_requires=["importlib_metadata; python_version < '3.8'"], package_data={'pymediainfo': bin_files}, cmdclass=cmdclass, classifiers=[ "Development Status :: 5 - Production/Stable", - "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymediainfo-5.1.0/tests/test_pymediainfo.py new/pymediainfo-6.0.1/tests/test_pymediainfo.py --- old/pymediainfo-5.1.0/tests/test_pymediainfo.py 2021-05-02 00:11:29.000000000 +0200 +++ new/pymediainfo-6.0.1/tests/test_pymediainfo.py 2022-11-26 00:27:03.000000000 +0100 @@ -1,10 +1,13 @@ # pylint: disable=missing-module-docstring, missing-class-docstring, missing-function-docstring, # pylint: disable=protected-access +import functools +import http.server import json import os import pathlib import pickle +import sys import tempfile import threading import unittest @@ -34,7 +37,7 @@ class MediaInfoTest(unittest.TestCase): def setUp(self): - with open(os.path.join(data_dir, "sample.xml"), "r") as f: + with open(os.path.join(data_dir, "sample.xml"), "r", encoding="utf-8") as f: self.xml_data = f.read() self.media_info = MediaInfo(self.xml_data) @@ -67,7 +70,7 @@ ) def test_track_existing_other_attributes(self): - with open(os.path.join(data_dir, "issue100.xml")) as f: + with open(os.path.join(data_dir, "issue100.xml"), encoding="utf-8") as f: media_info = MediaInfo(f.read()) general_tracks = [track for track in media_info.tracks if track.track_type == "General"] general_track = general_tracks[0] @@ -82,7 +85,7 @@ class MediaInfoInvalidXMLTest(unittest.TestCase): def setUp(self): - with open(os.path.join(data_dir, "invalid.xml"), "r") as f: + with open(os.path.join(data_dir, "invalid.xml"), "r", encoding="utf-8") as f: self.xml_data = f.read() def test_parse_invalid_xml(self): @@ -114,7 +117,7 @@ self.assertEqual(self.media_info.tracks[0].footersize, "59") self.assertEqual(self.non_full_mi.tracks[0].footersize, None) - def test_raises_on_nonexistent_library(self): # pylint: disable=no-self-use + def test_raises_on_nonexistent_library(self): with tempfile.TemporaryDirectory() as tmp_dir: nonexistent_library = os.path.join(tmp_dir, "nonexistent-libmediainfo.so") with pytest.raises(OSError) as exc: @@ -125,16 +128,16 @@ class MediaInfoFileLikeTest(unittest.TestCase): - def test_can_parse(self): # pylint: disable=no-self-use + def test_can_parse(self): with open(os.path.join(data_dir, "sample.mp4"), "rb") as f: MediaInfo.parse(f) def test_raises_on_text_mode_even_with_text(self): - with open(os.path.join(data_dir, "sample.xml")) as f: + with open(os.path.join(data_dir, "sample.xml"), encoding="utf-8") as f: self.assertRaises(ValueError, MediaInfo.parse, f) def test_raises_on_text_mode(self): - with open(os.path.join(data_dir, "sample.mkv")) as f: + with open(os.path.join(data_dir, "sample.mkv"), encoding="utf-8") as f: self.assertRaises(ValueError, MediaInfo.parse, f) @@ -159,14 +162,29 @@ self.assertEqual(len(self.media_info.tracks), 1) -@pytest.mark.internet +@pytest.mark.skipif( + sys.version_info < (3, 7), + reason="SimpleHTTPRequestHandler's 'directory' argument was added in Python 3.7", +) class MediaInfoURLTest(unittest.TestCase): def setUp(self): - url = "https://github.com/sbraz/pymediainfo/raw/v5.0/tests/data/sample.mkv" - self.media_info = MediaInfo.parse(url) + HandlerClass = functools.partial( # pylint: disable=invalid-name + http.server.SimpleHTTPRequestHandler, + directory=data_dir, + ) + # Pick a random port so that parallel tests (e.g. via 'tox -p') do not clash + self.httpd = http.server.HTTPServer(("", 0), HandlerClass) + port = self.httpd.socket.getsockname()[1] + self.url = f"http://127.0.0.1:{port}/sample.mkv" + threading.Thread(target=self.httpd.serve_forever).start() + + def tearDown(self): + self.httpd.shutdown() + self.httpd.server_close() def test_parse_url(self): - self.assertEqual(len(self.media_info.tracks), 3) + media_info = MediaInfo.parse(self.url) + self.assertEqual(len(media_info.tracks), 3) class MediaInfoPathlibTest(unittest.TestCase): @@ -395,7 +413,7 @@ self.mi_audio = MediaInfo.parse(os.path.join(data_dir, "sample.mp4")) self.mi_text = MediaInfo.parse(os.path.join(data_dir, "sample.mkv")) self.mi_image = MediaInfo.parse(os.path.join(data_dir, "empty.gif")) - with open(os.path.join(data_dir, "other_track.xml")) as f: + with open(os.path.join(data_dir, "other_track.xml"), encoding="utf-8") as f: self.mi_other = MediaInfo(f.read()) def test_empty_list(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymediainfo-5.1.0/tox.ini new/pymediainfo-6.0.1/tox.ini --- old/pymediainfo-5.1.0/tox.ini 2021-05-02 00:11:29.000000000 +0200 +++ new/pymediainfo-6.0.1/tox.ini 2022-11-26 00:27:03.000000000 +0100 @@ -1,9 +1,10 @@ [tox] envlist = - py36 py37 py38 py39 + py310 + py311 pypy3 black flake8 @@ -39,8 +40,6 @@ commands = isort --check pymediainfo tests [testenv:pylint] -# TODO: remove constraint when this is fixed: https://github.com/PyCQA/pylint/issues/3882 -basepython = python3.8 deps = pylint pytest