[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "stegasoo" version = "4.1.1" description = "Secure steganography with hybrid photo + passphrase + PIN authentication" readme = "README.md" license = "MIT" requires-python = ">=3.10" authors = [ { name = "Aaron D. Lee" } ] keywords = [ "steganography", "encryption", "security", "privacy", "cryptography", "image", ] classifiers = [ "Development Status :: 4 - Beta", "Environment :: Console", "Environment :: Web Environment", "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", "Topic :: Security :: Cryptography", "Topic :: Multimedia :: Graphics", ] dependencies = [ "pillow>=10.0.0", "cryptography>=41.0.0", "argon2-cffi>=23.0.0", ] [project.optional-dependencies] # DCT steganography support (v3.0+) dct = [ "numpy>=2.0.0", "scipy>=1.10.0", "jpegio>=0.2.0", "reedsolo>=1.7.0", ] cli = [ "click>=8.0.0", "qrcode>=7.30", "piexif>=1.1.0", ] compression = [ "lz4>=4.0.0", ] web = [ "flask>=3.0.0", "gunicorn>=21.0.0", "qrcode>=7.3.0", "pyzbar>=0.1.9", "piexif>=1.1.0", # Include DCT support for web UI "numpy>=2.0.0", "scipy>=1.10.0", "jpegio>=0.2.0", "reedsolo>=1.7.0", ] api = [ "fastapi>=0.100.0", "uvicorn[standard]>=0.20.0", "python-multipart>=0.0.6", "qrcode>=7.30", "pyzbar>=0.1.9", # Include DCT support for API "numpy>=2.0.0", "scipy>=1.10.0", "jpegio>=0.2.0", "reedsolo>=1.7.0", ] all = [ "stegasoo[cli,web,api,dct,compression]", ] dev = [ "stegasoo[all]", "pytest>=7.0.0", "pytest-cov>=4.0.0", "black>=23.0.0", "ruff>=0.1.0", "mypy>=1.0.0", ] [project.scripts] stegasoo = "stegasoo.cli:main" [project.urls] Homepage = "https://github.com/example/stegasoo" Documentation = "https://github.com/example/stegasoo#readme" Repository = "https://github.com/example/stegasoo" [tool.hatch.build.targets.sdist] include = [ "/src", "/data", ] [tool.hatch.build.targets.wheel] packages = ["src/stegasoo"] [tool.pytest.ini_options] testpaths = ["tests"] python_files = ["test_*.py"] addopts = "-v --cov=stegasoo --cov-report=term-missing" [tool.black] line-length = 100 target-version = ["py310", "py311", "py312"] [tool.ruff] line-length = 100 exclude = ["frontends/web/test_routes.py"] # Debug snippet, not a real module [tool.ruff.lint] select = ["E", "F", "I", "N", "W", "UP"] ignore = ["E501"] [tool.ruff.lint.per-file-ignores] # YCbCr colorspace variables (R, G, B, Y, Cb, Cr) are standard names "src/stegasoo/dct_steganography.py" = ["N803", "N806"] # Package __init__.py has imports after try/except and aliases - intentional structure "src/stegasoo/__init__.py" = ["E402"] [tool.mypy] python_version = "3.10" warn_return_any = true warn_unused_configs = true ignore_missing_imports = true