pywidevine/pyproject.toml
2025-10-27 13:20:50 +00:00

98 lines
2.2 KiB
TOML

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "pywidevine"
version = "1.9.0"
description = "Widevine CDM (Content Decryption Module) implementation in Python."
authors = [{ name = "rlaphoenix", email = "rlaphoenix@pm.me" }]
requires-python = ">=3.9"
readme = "README.md"
license = "GPL-3.0-only"
keywords = [
"python",
"drm",
"widevine",
"google",
]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"Intended Audience :: End Users/Desktop",
"Natural Language :: English",
"Operating System :: OS Independent",
"Topic :: Multimedia :: Video",
"Topic :: Security :: Cryptography",
"Topic :: Software Development :: Libraries :: Python Modules",
]
dependencies = [
"protobuf~=6.33.0",
"pymp4~=1.4.0",
"pycryptodome~=3.23.0",
"click~=8.1.7",
"requests~=2.32.5",
"Unidecode~=1.3.7",
"PyYAML~=6.0.3",
]
[project.optional-dependencies]
serve = ["aiohttp~=3.13.1"]
[project.urls]
Repository = "https://github.com/devine-dl/pywidevine"
Issues = "https://github.com/devine-dl/pywidevine/issues"
Discussions = "https://github.com/devine-dl/pywidevine/discussions"
Changelog = "https://github.com/devine-dl/pywidevine/blob/master/CHANGELOG.md"
[project.scripts]
pywidevine = "pywidevine.main:main"
[dependency-groups]
dev = [
"pre-commit~=4.3.0",
"mypy~=1.18.2",
"mypy-protobuf~=3.6.0",
"types-protobuf~=6.32.1.20250918",
"types-requests~=2.32.4.20250913",
"types-PyYAML~=6.0.12.20250915",
"isort~=6.1.0",
"ruff~=0.14.2",
]
[tool.hatch.build.targets.sdist]
include = [
"pywidevine",
"CHANGELOG.md",
]
[tool.hatch.build.targets.wheel]
packages = ["pywidevine"]
[tool.ruff]
extend-exclude = [
"*_pb2.py",
"*.pyi",
]
force-exclude = true
line-length = 120
select = ["E4", "E7", "E9", "F", "W"]
[tool.ruff.extend-per-file-ignores]
"pywidevine/__init__.py" = ["F403"]
[tool.isort]
line_length = 118
extend_skip_glob = ["*_pb2.py", "*.pyi"]
[tool.mypy]
check_untyped_defs = true
disallow_incomplete_defs = true
disallow_untyped_defs = true
exclude = [
'_pb2.pyi?$' # generated protobuffer files
]
follow_imports = "silent"
ignore_missing_imports = true
no_implicit_optional = true