mirror of
https://github.com/d-k-patel/ai-ffmpeg-cli.git
synced 2025-10-09 13:42:56 +03:00
Update version numbers to match git tag v0.2.6 for the upcoming PyPI release with token tracking and ASCII art interface features.
222 lines
5.3 KiB
TOML
222 lines
5.3 KiB
TOML
[build-system]
|
|
requires = ["hatchling>=1.18.0"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[project]
|
|
name = "ai-ffmpeg-cli"
|
|
version = "0.2.6"
|
|
description = "AI-powered CLI that translates natural language to safe ffmpeg commands"
|
|
readme = { file = "README.md", content-type = "text/markdown" }
|
|
license = { file = "LICENSE" }
|
|
requires-python = ">=3.10"
|
|
authors = [
|
|
{ name = "thedkpatel", email = "dhruv@thedkpatel.com" }
|
|
]
|
|
maintainers = [
|
|
{ name = "thedkpatel", email = "dhruv@thedkpatel.com" }
|
|
]
|
|
keywords = [
|
|
"ffmpeg",
|
|
"video",
|
|
"audio",
|
|
"cli",
|
|
"ai",
|
|
"natural-language",
|
|
"media-processing",
|
|
"conversion",
|
|
"automation"
|
|
]
|
|
classifiers = [
|
|
"Development Status :: 4 - Beta",
|
|
"Environment :: Console",
|
|
"Intended Audience :: Developers",
|
|
"Intended Audience :: End Users/Desktop",
|
|
"License :: OSI Approved :: MIT License",
|
|
"Operating System :: OS Independent",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Programming Language :: Python :: 3.13",
|
|
"Programming Language :: Python :: 3 :: Only",
|
|
"Topic :: Multimedia :: Video",
|
|
"Topic :: Multimedia :: Video :: Conversion",
|
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
"Topic :: System :: System Shells",
|
|
"Topic :: Utilities"
|
|
]
|
|
|
|
dependencies = [
|
|
"typer>=0.9.0",
|
|
"rich>=13.0.0",
|
|
"openai>=1.37.0",
|
|
"python-dotenv>=1.0.0",
|
|
"pydantic>=2.0.0",
|
|
"typing-extensions>=4.8.0",
|
|
"pyfiglet>=1.0.0",
|
|
"tiktoken>=0.5.0"
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"pytest>=7.0.0",
|
|
"pytest-mock>=3.10.0",
|
|
"pytest-cov>=6.0.0",
|
|
"ruff>=0.5.0",
|
|
"mypy>=1.5.0",
|
|
"pre-commit>=3.0.0",
|
|
"psutil>=5.0.0"
|
|
]
|
|
test = [
|
|
"pytest>=7.0.0",
|
|
"pytest-mock>=3.10.0",
|
|
"pytest-cov>=4.0.0",
|
|
"psutil>=5.0.0"
|
|
]
|
|
docs = [
|
|
"mkdocs>=1.5.0",
|
|
"mkdocs-material>=9.0.0",
|
|
"mkdocs-mermaid2-plugin>=1.0.0"
|
|
]
|
|
# Aggregate convenience extra for all dev+docs tools
|
|
all = [
|
|
"pytest>=7.0.0",
|
|
"pytest-mock>=3.10.0",
|
|
"pytest-cov>=6.0.0",
|
|
"ruff>=0.5.0",
|
|
"mypy>=1.5.0",
|
|
"pre-commit>=3.0.0",
|
|
"psutil>=5.0.0",
|
|
"mkdocs>=1.5.0",
|
|
"mkdocs-material>=9.0.0",
|
|
"mkdocs-mermaid2-plugin>=1.0.0"
|
|
]
|
|
|
|
[project.urls]
|
|
"Homepage" = "https://github.com/d-k-patel/ai-ffmpeg-cli"
|
|
"Documentation" = "https://d-k-patel.github.io/ai-ffmpeg-cli/"
|
|
"Repository" = "https://github.com/d-k-patel/ai-ffmpeg-cli"
|
|
"Bug Tracker" = "https://github.com/d-k-patel/ai-ffmpeg-cli/issues"
|
|
"Discussions" = "https://github.com/d-k-patel/ai-ffmpeg-cli/discussions"
|
|
"Changelog" = "https://github.com/d-k-patel/ai-ffmpeg-cli/releases"
|
|
"Funding" = "https://github.com/sponsors/d-k-patel"
|
|
|
|
[project.scripts]
|
|
aiclip = "ai_ffmpeg_cli.main:app"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/ai_ffmpeg_cli"]
|
|
|
|
[tool.hatch.build.targets.sdist]
|
|
include = [
|
|
"src/",
|
|
"tests/",
|
|
"README.md",
|
|
"LICENSE",
|
|
"pyproject.toml"
|
|
]
|
|
|
|
# Ruff configuration
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py310"
|
|
src = ["src", "tests"]
|
|
|
|
[tool.ruff.lint]
|
|
select = [
|
|
"E", # pycodestyle errors
|
|
"W", # pycodestyle warnings
|
|
"F", # pyflakes
|
|
"I", # isort
|
|
"B", # flake8-bugbear
|
|
"C4", # flake8-comprehensions
|
|
"UP", # pyupgrade
|
|
"ARG", # flake8-unused-arguments
|
|
"SIM", # flake8-simplify
|
|
"TCH", # flake8-type-checking
|
|
]
|
|
ignore = [
|
|
"E501", # line too long (handled by formatter)
|
|
"B008", # do not perform function calls in argument defaults
|
|
"B006", # do not use mutable data structures for argument defaults
|
|
]
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
"tests/**/*" = [
|
|
"ARG", # unused function arguments in tests
|
|
"S101", # use of assert detected
|
|
]
|
|
|
|
[tool.ruff.lint.isort]
|
|
force-single-line = true
|
|
known-first-party = ["ai_ffmpeg_cli"]
|
|
|
|
# MyPy configuration
|
|
[tool.mypy]
|
|
python_version = "3.10"
|
|
warn_return_any = true
|
|
warn_unused_configs = true
|
|
disallow_untyped_defs = true
|
|
disallow_incomplete_defs = true
|
|
check_untyped_defs = true
|
|
disallow_untyped_decorators = true
|
|
no_implicit_optional = true
|
|
warn_redundant_casts = true
|
|
warn_unused_ignores = true
|
|
warn_no_return = true
|
|
warn_unreachable = true
|
|
strict_equality = true
|
|
show_error_codes = true
|
|
exclude = [
|
|
"^tests/",
|
|
]
|
|
|
|
[[tool.mypy.overrides]]
|
|
module = ["tests.*"]
|
|
# Completely ignore type errors in tests to keep the focus on library types
|
|
ignore_errors = true
|
|
|
|
# Pytest configuration
|
|
[tool.pytest.ini_options]
|
|
minversion = "7.0"
|
|
testpaths = ["tests"]
|
|
python_files = ["test_*.py", "*_test.py"]
|
|
python_classes = ["Test*"]
|
|
python_functions = ["test_*"]
|
|
addopts = [
|
|
"-ra",
|
|
"--strict-markers",
|
|
"--strict-config",
|
|
"--tb=short"
|
|
]
|
|
markers = [
|
|
"slow: marks tests as slow (deselect with '-m \"not slow\"')",
|
|
"integration: marks tests as integration tests",
|
|
"unit: marks tests as unit tests"
|
|
]
|
|
|
|
# Coverage configuration
|
|
[tool.coverage.run]
|
|
source = ["src"]
|
|
branch = true
|
|
omit = [
|
|
"tests/*",
|
|
"src/ai_ffmpeg_cli/__init__.py"
|
|
]
|
|
|
|
[tool.coverage.report]
|
|
exclude_lines = [
|
|
"pragma: no cover",
|
|
"def __repr__",
|
|
"if self.debug:",
|
|
"if settings.DEBUG",
|
|
"raise AssertionError",
|
|
"raise NotImplementedError",
|
|
"if 0:",
|
|
"if __name__ == .__main__.:"
|
|
]
|
|
show_missing = true
|
|
precision = 2
|
|
|
|
[tool.coverage.html]
|
|
directory = "htmlcov" |