[build-system] requires = ["setuptools>=65.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "medeia-macina" version = "0.1.0" description = "Comprehensive media management and search platform with support for local files, Hydrus database, torrents, books, and P2P networks" readme = "README.md" requires-python = ">=3.9,<3.12" license = {text = "MIT"} authors = [ {name = "Your Name", email = "your.email@example.com"} ] keywords = ["media", "search", "management", "hydrus", "download", "cli", "tui"] classifiers = [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Multimedia", "Topic :: Internet", ] dependencies = [ # Core CLI and TUI frameworks "typer>=0.9.0", "prompt-toolkit>=3.0.0", "textual>=0.30.0", # Media processing and downloading "yt-dlp>=2023.11.0", "yt-dlp-ejs", # EJS challenge solver scripts for YouTube JavaScript challenges "requests>=2.31.0", "httpx>=0.25.0", "ffmpeg-python>=0.2.0", # Document and data handling "PyPDF2>=3.0.0", "img2pdf>=0.6.0", "mutagen>=1.46.0", "cbor2>=4.0", # Image and media support "Pillow>=10.0.0", "python-bidi>=0.4.2", # Metadata extraction and processing "musicbrainzngs>=0.7.0", "beautifulsoup4>=4.12.0", "lxml>=4.9.0", # Advanced searching and libraries "libgen-api>=1.0.0", "aioslsk>=1.6.0", "imdbinfo>=0.1.10", # Encryption and security "pycryptodome>=3.18.0", # Data processing "bencode3", "tqdm>=4.66.0", # Browser automation "playwright>=1.40.0", # Development and utilities "python-dateutil>=2.8.0", ] [project.optional-dependencies] dev = [ # Testing "pytest>=7.4.0", "pytest-cov>=4.1.0", "pytest-asyncio>=0.21.0", # Code quality "black>=23.11.0", "flake8>=6.1.0", "isort>=5.12.0", "mypy>=1.7.0", "pylint>=3.0.0", # Documentation "sphinx>=7.2.0", "sphinx-rtd-theme>=1.3.0", # Debugging and profiling "ipython>=8.17.0", "ipdb>=0.13.0", "memory-profiler>=0.61.0", # Version control and CI/CD helpers "pre-commit>=3.5.0", ] [project.scripts] mm = "medeia_macina.cli_entry:main" medeia = "medeia_macina.cli_entry:main" [project.urls] Homepage = "https://github.com/yourusername/medeia-macina" Documentation = "https://medeia-macina.readthedocs.io" Repository = "https://github.com/yourusername/medeia-macina.git" Issues = "https://github.com/yourusername/medeia-macina/issues" [tool.setuptools] packages = ["cmdlets", "helper", "TUI", "medeia_macina"] [tool.black] line-length = 100 target-version = ['py39', 'py310', 'py311', 'py312'] include = '\.pyi?$' extend-exclude = ''' /( # directories \.eggs | \.git | \.hg | \.mypy_cache | \.tox | \.venv | _build | buck-out | build | dist | __pycache__ )/ ''' [tool.isort] profile = "black" line_length = 100 target_version = ["py39", "py310", "py311", "py312"] [tool.mypy] python_version = "3.9" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = false disallow_incomplete_defs = false check_untyped_defs = false no_implicit_optional = true warn_redundant_casts = true warn_unused_ignores = true warn_no_return = true [tool.pylint.messages_control] disable = [ "C0330", "C0326", # Bad whitespace "R0913", # Too many arguments "R0914", # Too many local variables ] [tool.pytest.ini_options] testpaths = ["tests"] python_files = ["test_*.py", "*_test.py"] addopts = "-v --cov=. --cov-report=html --cov-report=term-missing" [tool.coverage.run] branch = true omit = [ "*/tests/*", "*/__main__.py", ] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "raise AssertionError", "raise NotImplementedError", "if __name__ == .__main__.:", "if TYPE_CHECKING:", ]