[project]
name ="ytdl-sub"
dynamic = [ "version" ]
authors = [ { name = "Jesse Bannon" } ]
description = "Automate downloading metadata generation with YoutubeDL"
readme = "README.md"
requires-python = ">=3.10"
license = { file = "LICENSE" }
classifiers = [
    "Topic :: Multimedia :: Sound/Audio",
    "Topic :: Multimedia :: Video",
    "License :: Public Domain",
    "Environment :: Console",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
]
dependencies = [
    "yt-dlp[default]==2025.12.8",
    "colorama~=0.4",
    "mergedeep~=1.3",
    "mediafile~=0.12",
    "PyYAML~=6.0",
]
urls = { Homepage = "https://github.com/jmbannon/ytdl-sub" }

[build-system]
requires = [ "setuptools >= 67.0" ]
build-backend = "setuptools.build_meta"

[tool.setuptools]
platforms = [ "Unix" ]

[tool.setuptools.dynamic]
version = { attr = "ytdl_sub.__pypi_version__" }
[tool.setuptools.package-dir]
"" = "src"
[tool.setuptools.package-data]
"*" = ["*.yaml"]
[tool.setuptools.packages.find]
where = ["src"]


[project.optional-dependencies]
test = [
    "coverage[toml]>=6.3,<8.0",
    "pytest>=7.2,<9.0",
    "pytest-rerunfailures>=14,<17",
]
lint = [
    "black==24.10.0",
    "isort==7.0.0",
    "pylint==4.0.1",
]
docs = [
    "sphinx>=7,<10",
    "sphinx-rtd-theme>=2,<4",
    "sphinx-book-theme~=1.0",
    "sphinx-copybutton~=0.5",
    "sphinx_design~=0.6",
]
build = [
    "build~=1.2",
    "twine>=5,<7",
    "pyinstaller~=6.5",
]
[project.scripts]
ytdl-sub = "ytdl_sub.main:main"

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

[tool.black]
line_length = 100
target-version = ["py310"]

[tool.pylint.MASTER]
disable = [
    "C0115", # Missing class docstring
    "C0114", # missing-module-docstring
    "R0903", # too-few-public-methods
    "R0801", # similar lines
    "R0913", # Too many arguments
    "R0901", # too-many-ancestors
    "R0902", # too-many-instance-attributes
    "R1711", # useless-return
    "R0917", # too many positional arguments
    "W0511", # TODO
]

load-plugins = "pylint.extensions.docparams"

[tool.coverage.run]
include = [
    "src/*"
]

[tool.coverage.report]
exclude_also = [
    "raise UNREACHABLE.*",
]
