[build-system]
requires = ["setuptools>=65.0", "wheel"]
build-backend = "setuptools.build_meta"

[tool.setuptools.dynamic]
version = {attr = "webdrop_bridge.__version__"}

[project]
name = "webdrop-bridge"
dynamic = ["version"]
description = "Professional Qt-based desktop bridge application converting web drag-and-drop to native file operations for InDesign, Word, and other desktop applications"
readme = "README.md"
requires-python = ">=3.9"
license = {text = "MIT"}
authors = [
    {name = "Claudius Hansch", email = "claudius.hansch@hoerl-im.de"}
]
keywords = ["qt", "pyside6", "drag-drop", "desktop", "automation"]
classifiers = [
    "Development Status :: 3 - Alpha",
    "Environment :: X11 Applications :: Qt",
    "Intended Audience :: End Users/Desktop",
    "License :: OSI Approved :: MIT License",
    "Operating System :: Microsoft :: Windows :: Windows 10",
    "Operating System :: Microsoft :: Windows :: Windows 11",
    "Operating System :: MacOS :: MacOS 12",
    "Operating System :: MacOS :: MacOS 13",
    "Operating System :: MacOS :: MacOS 14",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Programming Language :: Python :: 3.14",
    "Topic :: Desktop Environment",
    "Topic :: Utilities",
]

dependencies = [
    "PySide6>=6.6.0",
    "PyYAML>=6.0",
    "python-dotenv>=1.0.0",
]

[project.optional-dependencies]
dev = [
    "pytest>=7.4.0",
    "pytest-cov>=4.1.0",
    "pytest-qt>=4.2.0",
    "black>=23.0.0",
    "ruff>=0.1.0",
    "mypy>=1.5.0",
    "isort>=5.12.0",
]
build = [
    "pyinstaller>=6.0.0",
    "py2exe>=0.12.0; sys_platform == 'win32'",
]
docs = [
    "sphinx>=7.0.0",
    "sphinx-rtd-theme>=1.3.0",
]

[project.urls]
Homepage = "https://git.him-tools.de/HIM-public/webdrop-bridge"
Documentation = "https://webdrop-bridge.readthedocs.io"
Repository = "https://git.him-tools.de/HIM-public/webdrop-bridge"
"Bug Tracker" = "https://git.him-tools.de/HIM-public/webdrop-bridge/issues"

[project.scripts]
webdrop-bridge = "webdrop_bridge.main:main"

[tool.setuptools]
packages = ["webdrop_bridge"]
package-dir = {"" = "src"}

[tool.setuptools.package-data]
webdrop_bridge = [
    "resources/**/*",
    "webapp/**/*",
]

[tool.black]
line-length = 100
target-version = ["py310", "py311", "py312"]
extend-exclude = '''
/(
  | \.git
  | \.venv
  | build
  | dist
)/
'''

[tool.isort]
profile = "black"
line_length = 100
skip_gitignore = true

[tool.mypy]
python_version = "3.10"
strict = true
warn_return_any = true
warn_unused_configs = true
ignore_missing_imports = true

[[tool.mypy.overrides]]
module = "PySide6.*"
ignore_missing_imports = true

[tool.pytest.ini_options]
minversion = "7.0"
testpaths = ["tests"]
addopts = [
    "-v",
    "--cov=src/webdrop_bridge",
    "--cov-report=html",
    "--cov-report=term-missing",
]
filterwarnings = [
    "ignore::DeprecationWarning",
    "ignore::PendingDeprecationWarning",
]

[tool.coverage.run]
source = ["src/webdrop_bridge"]
omit = [
    "*/tests/*",
    "*/site-packages/*",
    "*/__init__.py",
]

[tool.coverage.report]
exclude_lines = [
    "pragma: no cover",
    "def __repr__",
    "raise AssertionError",
    "raise NotImplementedError",
    "if __name__ == .__main__.:",
    "if TYPE_CHECKING:",
]
