[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "soosef" version = "0.1.0" description = "Soo Security Fieldkit — offline-first security toolkit for journalists, NGOs, and at-risk organizations" readme = "README.md" license = "MIT" requires-python = ">=3.11" authors = [ { name = "Aaron D. Lee" } ] keywords = [ "steganography", "provenance", "attestation", "security", "privacy", "fieldkit", "airgap", "offline", ] classifiers = [ "Development Status :: 2 - Pre-Alpha", "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.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Topic :: Security :: Cryptography", "Topic :: Multimedia :: Graphics", ] dependencies = [ "stegasoo>=4.3.0", "verisoo>=0.1.0", "pillow>=10.0.0", "cryptography>=41.0.0", "argon2-cffi>=23.0.0", ] [project.optional-dependencies] web = [ "flask>=3.0.0", "gunicorn>=21.0.0", # Stegasoo web extras "stegasoo[web]", # Verisoo storage "lmdb>=1.4.0", "imagehash>=4.3.0", "exifread>=3.0.0", ] cli = [ "click>=8.0.0", "rich>=13.0.0", "stegasoo[cli]", "verisoo[cli]", ] fieldkit = [ "watchdog>=4.0.0", "pyudev>=0.24.0", ] rpi = [ "soosef[web,cli,fieldkit]", "gpiozero>=2.0", ] all = [ "soosef[web,cli,fieldkit]", "stegasoo[all]", "verisoo[all]", ] dev = [ "soosef[all]", "pytest>=7.0.0", "pytest-cov>=4.0.0", "black>=23.0.0", "ruff>=0.1.0", "mypy>=1.0.0", ] [project.scripts] soosef = "soosef.cli:main" [project.urls] Homepage = "https://github.com/alee/soosef" Repository = "https://github.com/alee/soosef" [tool.hatch.build.targets.sdist] include = [ "/src", "/frontends", ] [tool.hatch.build.targets.wheel] packages = ["src/soosef", "frontends"] [tool.hatch.build.targets.wheel.sources] "src" = "" [tool.pytest.ini_options] testpaths = ["tests"] python_files = ["test_*.py"] addopts = "-v --cov=soosef --cov-report=term-missing" [tool.black] line-length = 100 target-version = ["py311", "py312", "py313"] [tool.ruff] line-length = 100 [tool.ruff.lint] select = ["E", "F", "I", "N", "W", "UP"] ignore = ["E501"] [tool.mypy] python_version = "3.11" warn_return_any = true warn_unused_configs = true ignore_missing_imports = true