diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 8eeea2c..0000000 --- a/.travis.yml +++ /dev/null @@ -1,110 +0,0 @@ -os: linux -dist: jammy -language: python -addons: - apt: - packages: - - libmms0 -jobs: - include: - - python: &python_main_version 3.11 - env: - TOXENV: docs,black,flake8,isort,mypy,pylint - TOX_PARALLEL: "-p" - - python: 3.7 - env: - TOXENV: py37 - - python: 3.8 - env: - TOXENV: py38 - - python: 3.9 - env: - TOXENV: py39 - - python: 3.10 - env: - TOXENV: py310 - - python: 3.11 - env: - TOXENV: py311 - - python: pypy3 - env: - TOXENV: pypy3 - - os: osx - # Not required but makes Travis' output prettier - language: generic - env: - MB_PYTHON_VERSION: 3.7 - TOXENV: py37 - - os: osx - language: generic - env: - MB_PYTHON_VERSION: 3.8 - TOXENV: py38 - - os: osx - language: generic - env: - MB_PYTHON_VERSION: 3.9 - TOXENV: py39 - - os: osx - language: generic - env: - MB_PYTHON_VERSION: 3.10 - TOXENV: py310 - - os: osx - language: generic - env: - MB_PYTHON_VERSION: 3.11 - TOXENV: py311 -before_install: | - if [ $TRAVIS_OS_NAME == osx ]; then - git clone https://github.com/matthew-brett/multibuild - touch config.sh # required by the multibuild project - source multibuild/common_utils.sh - source multibuild/travis_steps.sh - before_install - 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 - mv MediaInfoLib/libmediainfo.0.dylib pymediainfo - mv MediaInfoLib/License.html docs - else - 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 dpkg -i ${libzen_deb} ${mediainfo_deb} - popd - fi - pip install tox -script: "tox $TOX_PARALLEL" -notifications: - email: - on_success: change - on_failure: change -after_success: | - if [[ $TRAVIS_TAG ]]; then - if [[ $TRAVIS_OS_NAME == osx && $MB_PYTHON_VERSION == $PYTHON_MAIN_VERSION ]]; then - pip install wheel twine - python setup.py bdist_wheel - twine upload --skip-existing -u sbraz dist/*.whl - # We only want to upload distributions from environments where - # the actual test suite runs, and not just QA stuff like pylint & friends, - # so we make sure it's a py-something tox environment - elif [[ $TRAVIS_OS_NAME == linux && $TRAVIS_PYTHON_VERSION == $PYTHON_MAIN_VERSION && $TOXENV == py?? ]]; then - # sdists generated on OSX have a problem with the accented test file - # https://github.com/sbraz/pymediainfo/issues/67 - python setup.py sdist - pip install twine - twine upload --skip-existing -u sbraz dist/*.gz - fi - fi -env: - global: - # TWINE_PASSWORD - - secure: "WjxnZjhgG7SCFbtYNbCAv935y3GG1CBHKJZbjSag9dBNg41OF98Q4PjnK6KxQ68Avfsv8mTGn8FbbGyXU4J033khynMCDOPMo0MAKPVYTaon3GKXf9triyzuuFty5U0kydJyqQdiqpkJPgkOou19s/x1AesfBthUswS51kyWdeg=" - - MEDIAINFO_VERSION: 22.09 - - LIBZEN_VERSION: 0.4.39 - - UBUNTU_VERSION: 22.04 - - PYTHON_MAIN_VERSION: *python_main_version - - TOX_PARALLEL_NO_SPINNER: 1 diff --git a/README.rst b/README.rst index e502842..9016875 100644 --- a/README.rst +++ b/README.rst @@ -13,9 +13,6 @@ 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 diff --git a/appveyor.yml b/appveyor.yml index be9b693..faae008 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,34 +1,78 @@ -image: - # Currently required to support Python 3.9 - - Visual Studio 2019 environment: + LINUX_IMAGE: &linux_image Ubuntu2004 + MACOS_IMAGE: &macos_image macos-monterey + 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: 22.09 + 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: + - 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: - - PYTHON: "C:/Python37" - TOXENV: py37 - - PYTHON: "C:/Python38" - TOXENV: py38 - - PYTHON: "C:/Python39" - TOXENV: py39 - - PYTHON: "C:/Python310" - TOXENV: py310 - - PYTHON: "C:/Python311" - TOXENV: py311 - - PYTHON: "C:/Python37-x64" - TOXENV: py37 - - PYTHON: "C:/Python38-x64" - TOXENV: py38 - - PYTHON: "C:/Python39-x64" - TOXENV: py39 - - PYTHON: "C:/Python310-x64" - TOXENV: py310 - - PYTHON: "C:/Python311-x64" - TOXENV: py311 -install: + 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)" @@ -40,10 +84,86 @@ install: - 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