comictagger/setup.cfg
Timmy Welch 63718882a5 Update pyinstaller package to not include metron or gcd by default
This makes it so that users using pyinstaller can update metron and gcd without waiting for a new ComicTagger release
2024-09-19 19:23:41 -07:00

349 lines
8.2 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-2.0
license_files = LICENSE
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
chardet>=5.1.0,<6
comicfn2dict>=0.2.1
importlib-metadata>=3.3.0
isocodes>=2023.11.26
natsort>=8.1.0
packaging>=20
pathvalidate
pillow>=9.1.0,<10
pyrate-limiter>=2.6,<3
pyyaml
rapidfuzz>=2.12.0
requests==2.*
settngs==0.10.4
text2digits
typing-extensions>=4.3.0
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
comicapi.tags =
cr = comicapi.tags.comicrack:ComicRack
comictagger.talker =
comicvine = comictalker.talkers.comicvine:ComicVineTalker
pyinstaller40 =
hook-dirs = comictaggerlib.__pyinstaller:get_hook_dirs
[options.extras_require]
7z =
py7zr
all =
PyQt5
PyQtWebEngine
comicinfoxml==0.4.*
gcd-talker>0.1.0
metron-talker>0.1.5
pillow-avif-plugin>=1.4.1
pillow-jxl-plugin>=1.2.5
py7zr
rarfile>=4.0
pyicu;sys_platform == 'linux' or sys_platform == 'darwin'
archived_tags =
ct-archived-tags
avif =
pillow-avif-plugin>=1.4.1
cbr =
rarfile>=4.0
cix =
comicinfoxml==0.4.*
gcd =
gcd-talker>0.1.0
gui =
PyQt5
icu =
pyicu;sys_platform == 'linux' or sys_platform == 'darwin'
jxl =
pillow-jxl-plugin>=1.2.5
metron =
metron-talker>0.1.5
pyinstaller =
PyQt5
PyQtWebEngine
comicinfoxml==0.4.*
pillow-avif-plugin>=1.4.1
pillow-jxl-plugin>=1.2.5
py7zr
rarfile>=4.0
pyicu;sys_platform == 'linux' or sys_platform == 'darwin'
qtw =
PyQt5
PyQtWebEngine
[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
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
deps =
pytest>=7
icu,all: pyicu-binary
extras =
7z: 7Z
cbr: CBR
gui: GUI
all: 7Z,CBR,GUI
commands =
python -m pytest {tty:--color=yes} {posargs}
[testenv:py3.9-{icu,all}]
base = {env:tox_env:testenv}
[testenv:format]
labels =
build
deps =
black>=22
isort>=5.10
setup-cfg-fmt
autoflake
pyupgrade
commands =
-python ./build-tools/generate_settngs.py
-setup-cfg-fmt setup.cfg
-python -m autoflake -i --remove-all-unused-imports --ignore-init-module-imports -r comictaggerlib comicapi comictalker testing tests build-tools
-python -m isort --af --add-import 'from __future__ import annotations' .
-python -m black .
[testenv:lint]
skip_install = true
depends = format
deps =
flake8
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
id~=1.0
keyrings.alt
passenv =
GITHUB_*
ACTIONS_*
CI
setenv =
TWINE_NON_INTERACTIVE=true
commands =
python {tox_root}/build-tools/oidc-exchange.py
python -m twine upload dist/*.whl dist/*.tar.gz
[testenv:pyinstaller]
description = Generate pyinstaller executable
labels =
build
release
base = {env:tox_env:testenv}
depends =
clean
deps =
pyinstaller>=5.6.2,!=6.0.0
extras =
pyinstaller
commands =
pyrcc5 comictaggerlib/graphics/graphics.qrc -o comictaggerlib/graphics/resources.py
pyinstaller -y build-tools/comictagger.spec
python -c 'import importlib,platform; importlib.import_module("icu") if platform.system() != "Windows" else ...' # Sanity check for icu
[testenv:appimage]
description = Generate appimage executable
skip_install = true
platform = linux
base = {env:tox_env:testenv}
labels =
release
build
depends =
clean
pyinstaller
deps =
requests
allowlist_externals =
{tox_root}/build/appimagetool-x86_64.AppImage
change_dir = {tox_root}/dist/binary
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"))'
{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
deps =
dmgbuild
commands =
python ./build-tools/zip_artifacts.py
[testenv:venv]
envdir = venv
deps =
flake8
flake8-black
flake8-encodings
flake8-isort
mypy
types-setuptools
types-requests
build
pyinstaller>=5.6.2,!=6.0.0
[flake8]
max-line-length = 120
extend-ignore = E203, E501, A003, A005, T202, E701
extend-exclude = venv, scripts, build, dist, comictaggerlib/ctversion.py, comictaggerlib/graphics/resources.py
per-file-ignores =
comictaggerlib/cli.py: T20
build-tools/generate_settngs.py: T20
build-tools/oidc-exchange.py: T20
tests/*: L
[mypy]
exclude = comictaggerlib/graphics/resources.py
check_untyped_defs = true
disallow_any_generics = true
disallow_incomplete_defs = true
disallow_untyped_defs = true
warn_redundant_casts = true
warn_unused_ignores = true
disable_error_code = import-untyped
[mypy-testing.*]
disallow_untyped_defs = false
disallow_incomplete_defs = false
check_untyped_defs = false
[mypy-tests.*]
disallow_untyped_defs = false
disallow_incomplete_defs = false
check_untyped_defs = false
[mypy-comictaggerlib.graphics.resources]
ignore_errors = True