f94c9ef857
Fix platform case Remove icu check from appimage step as ComicTagger is not installed Add appimagetool to allowed commands Fix appimage paths
283 lines
6.5 KiB
INI
283 lines
6.5 KiB
INI
[metadata]
|
|
name = comictagger
|
|
description = A cross-platform GUI/CLI app for writing metadata to comic archives
|
|
long_description = file: README.md
|
|
long_description_content_type = text/markdown
|
|
url = https://github.com/comictagger/comictagger
|
|
author = ComicTagger team
|
|
author_email = comictagger@gmail.com
|
|
license = Apache License 2.0
|
|
classifiers =
|
|
Development Status :: 4 - Beta
|
|
Environment :: Console
|
|
Environment :: MacOS X
|
|
Environment :: Win32 (MS Windows)
|
|
Environment :: X11 Applications :: Qt
|
|
Intended Audience :: End Users/Desktop
|
|
License :: OSI Approved :: Apache Software License
|
|
Natural Language :: English
|
|
Operating System :: OS Independent
|
|
Programming Language :: Python :: 3
|
|
Programming Language :: Python :: 3 :: Only
|
|
Topic :: Multimedia :: Graphics
|
|
Topic :: Other/Nonlisted Topic
|
|
Topic :: Utilities
|
|
keywords =
|
|
comictagger
|
|
comics
|
|
comic
|
|
metadata
|
|
tagging
|
|
tagger
|
|
|
|
[options]
|
|
packages = find:
|
|
install_requires =
|
|
appdirs==1.4.4
|
|
beautifulsoup4>=4.1
|
|
importlib-metadata>=3.3.0
|
|
natsort>=8.1.0
|
|
pathvalidate
|
|
pillow>=9.1.0,<10
|
|
pycountry
|
|
rapidfuzz>=2.12.0
|
|
requests==2.*
|
|
settngs==0.6.2
|
|
text2digits
|
|
typing-extensions
|
|
wordninja
|
|
python_requires = >=3.9
|
|
|
|
[options.packages.find]
|
|
exclude = tests; testing
|
|
|
|
[options.entry_points]
|
|
console_scripts = comictagger=comictaggerlib.main:main
|
|
comicapi.archiver =
|
|
zip = comicapi.archivers.zip:ZipArchiver
|
|
sevenzip = comicapi.archivers.sevenzip:SevenZipArchiver
|
|
rar = comicapi.archivers.rar:RarArchiver
|
|
folder = comicapi.archivers.folder:FolderArchiver
|
|
comictagger.talker =
|
|
comicvine = comictalker.talkers.comicvine:ComicVineTalker
|
|
pyinstaller40 =
|
|
hook-dirs = comictaggerlib.__pyinstaller:get_hook_dirs
|
|
|
|
[options.extras_require]
|
|
7Z =
|
|
py7zr
|
|
CBR =
|
|
rarfile>=4.0
|
|
GUI =
|
|
PyQt5
|
|
ICU =
|
|
pyicu;sys_platform == 'linux' or sys_platform == 'darwin'
|
|
all =
|
|
PyQt5
|
|
py7zr
|
|
rarfile>=4.0
|
|
pyicu;sys_platform == 'linux' or sys_platform == 'darwin'
|
|
|
|
[options.package_data]
|
|
comicapi =
|
|
data/*
|
|
comictaggerlib =
|
|
ui/*
|
|
graphics/*
|
|
|
|
[tox:tox]
|
|
env_list =
|
|
format
|
|
py3.9-{none,gui,7z,cbr,icu,all}
|
|
minversion = 4.4.12
|
|
basepython = {env:tox_python:python3.9}
|
|
|
|
[testenv]
|
|
description = run the tests with pytest
|
|
package = wheel
|
|
wheel_build_env = .pkg
|
|
deps =
|
|
pytest>=7
|
|
extras =
|
|
7z: 7Z
|
|
cbr: CBR
|
|
gui: GUI
|
|
icu: ICU
|
|
all: all
|
|
commands =
|
|
python -m pytest {tty:--color=yes} {posargs}
|
|
icu,all: python -c 'import importlib,platform; importlib.import_module("icu") if platform.system() != "Windows" else ...' # Sanity check for icu
|
|
|
|
[m1env]
|
|
description = run the tests with pytest
|
|
package = wheel
|
|
wheel_build_env = .pkg
|
|
deps =
|
|
pytest>=7
|
|
icu,all: pyicu-binary
|
|
extras =
|
|
7z: 7Z
|
|
cbr: CBR
|
|
gui: GUI
|
|
all: 7Z,CBR,GUI
|
|
|
|
[testenv:py3.9-{icu,all}]
|
|
base = {env:tox_env:testenv}
|
|
|
|
[testenv:format]
|
|
labels =
|
|
release
|
|
build
|
|
skip_install = true
|
|
deps =
|
|
black>=22
|
|
isort>=5.10
|
|
setup-cfg-fmt
|
|
autoflake
|
|
pyupgrade
|
|
commands =
|
|
-setup-cfg-fmt setup.cfg
|
|
-python -m autoflake -i --remove-all-unused-imports --ignore-init-module-imports .
|
|
-python -m isort --af --add-import 'from __future__ import annotations' .
|
|
-python -m black .
|
|
|
|
[testenv:lint]
|
|
labels =
|
|
release
|
|
skip_install = true
|
|
depends = format
|
|
deps =
|
|
flake8==4.*
|
|
flake8-black
|
|
flake8-encodings
|
|
flake8-isort
|
|
mypy
|
|
types-setuptools
|
|
types-requests
|
|
commands =
|
|
python -m flake8 .
|
|
-python -m mypy --ignore-missing-imports comicapi comictaggerlib comictalker
|
|
|
|
[testenv:clean]
|
|
description = Clean development outputs
|
|
labels =
|
|
release
|
|
build
|
|
depends =
|
|
format
|
|
lint
|
|
skip_install = true
|
|
commands =
|
|
-python -c 'import shutil,pathlib; \
|
|
shutil.rmtree("./build/", ignore_errors=True); \
|
|
shutil.rmtree("./dist/", ignore_errors=True); \
|
|
pathlib.Path("./comictaggerlib/ctversion.py").unlink(missing_ok=True); \
|
|
pathlib.Path("comictagger.spec").unlink(missing_ok=True)'
|
|
|
|
[testenv:wheel]
|
|
description = Generate wheel and tar.gz
|
|
labels =
|
|
release
|
|
build
|
|
depends = clean
|
|
skip_install = true
|
|
deps =
|
|
build
|
|
commands =
|
|
python -m build
|
|
|
|
[testenv:pypi-upload]
|
|
description = Upload wheel to PyPi
|
|
platform = Linux
|
|
labels =
|
|
release
|
|
skip_install = true
|
|
depends = wheel
|
|
deps =
|
|
twine
|
|
passenv =
|
|
TWINE_*
|
|
setenv =
|
|
TWINE_NON_INTERACTIVE=true
|
|
commands =
|
|
python -m twine upload dist/*.whl dist/*.tar.gz
|
|
|
|
[testenv:pyinstaller]
|
|
description = Generate pyinstaller executable
|
|
labels =
|
|
release
|
|
build
|
|
base = {env:tox_env:testenv}
|
|
depends =
|
|
clean
|
|
pypi-upload
|
|
deps =
|
|
pyinstaller>=5.6.2
|
|
extras =
|
|
all
|
|
commands =
|
|
python -c 'import importlib,platform; importlib.import_module("icu") if platform.system() != "Windows" else ...' # Sanity check for icu
|
|
pyinstaller -y build-tools/comictagger.spec
|
|
|
|
[testenv:appimage]
|
|
description = Generate appimage executable
|
|
skip_install = true
|
|
platform = linux
|
|
base = {env:tox_env:testenv}
|
|
labels =
|
|
release
|
|
build
|
|
depends =
|
|
clean
|
|
pypi-upload
|
|
pyinstaller
|
|
deps =
|
|
requests
|
|
allowlist_externals =
|
|
{tox_root}/build/appimagetool-x86_64.AppImage
|
|
change_dir = dist
|
|
commands_pre =
|
|
-python -c 'import shutil; shutil.rmtree("{tox_root}/build/", ignore_errors=True)'
|
|
python {tox_root}/build-tools/get_appimage.py {tox_root}/build/appimagetool-x86_64.AppImage
|
|
commands =
|
|
python -c 'import shutil,pathlib; shutil.copytree("{tox_root}/dist/comictagger/", "{tox_root}/build/appimage", dirs_exist_ok=True); \
|
|
shutil.copy("{tox_root}/comictaggerlib/graphics/app.png", "{tox_root}/build/appimage/app.png"); \
|
|
pathlib.Path("{tox_root}/build/appimage/AppRun").symlink_to("comictagger"); \
|
|
pathlib.Path("{tox_root}/build/appimage/AppRun.desktop").write_text( \
|
|
pathlib.Path("{tox_root}/build-tools/ComicTagger.desktop").read_text() \
|
|
.replace("/usr/local/share/comictagger/app.png", "app") \
|
|
.replace("Exec=comictagger", "Exec={tox_root}/comictagger"))'
|
|
{tox_root}/build/appimagetool-x86_64.AppImage {tox_root}/build/appimage
|
|
|
|
[testenv:zip_artifacts]
|
|
description = Zip release artifacts
|
|
labels =
|
|
release
|
|
build
|
|
depends =
|
|
wheel
|
|
pyinstaller
|
|
appimage
|
|
commands =
|
|
python ./build-tools/zip_artifacts.py
|
|
|
|
[testenv:venv]
|
|
envdir = venv
|
|
deps =
|
|
flake8==4.*
|
|
flake8-black
|
|
flake8-encodings
|
|
flake8-isort
|
|
mypy
|
|
types-setuptools
|
|
types-requests
|
|
build
|
|
pyinstaller>=5.6.2
|
|
|
|
[flake8]
|
|
max-line-length = 120
|
|
extend-ignore = E203, E501, A003
|
|
extend-exclude = venv, scripts, build, dist, comictaggerlib/ctversion.py
|
|
per-file-ignores =
|
|
comictaggerlib/cli.py: T20
|