[build-system] requires = ["setuptools>=68", "wheel"] build-backend = "setuptools.build_meta" [project] name = "decnet" version = "0.2.0" description = "Deception network: deploy honeypot deckies that appear as real LAN hosts" requires-python = ">=3.11" dependencies = [ "typer[all]>=0.12", "pydantic>=2.0", "docker>=7.0", "pyyaml>=6.0", "jinja2>=3.1", "fastapi>=0.110.0", "uvicorn>=0.29.0", "aiosqlite>=0.20.0", "PyJWT>=2.8.0", "bcrypt>=4.1.0", "psutil>=5.9.0", "python-dotenv>=1.0.0", "sqlmodel>=0.0.16", ] [project.optional-dependencies] dev = [ "pytest>=9.0.3", "ruff>=0.15.10", "bandit>=1.9.4", "pip>=26.0", "pip-audit>=2.10.0", "httpx>=0.28.1", "hypothesis>=6.151.14", "pytest-cov>=7.1.0", "pytest-asyncio>=1.3.0", "freezegun>=1.5.5", "schemathesis>=4.15.1", "pytest-xdist>=3.8.0", "flask>=3.1.3", "twisted>=25.5.0", "requests>=2.33.1", "redis>=7.4.0", "pymysql>=1.1.2", "psycopg2-binary>=2.9.11", "paho-mqtt>=2.1.0", "pymongo>=4.16.0", "scapy>=2.6.1", ] [project.scripts] decnet = "decnet.cli:app" [tool.pytest.ini_options] asyncio_mode = "auto" asyncio_debug = "true" addopts = "-m 'not fuzz and not live' -v -q -x -n logical" markers = [ "fuzz: hypothesis-based fuzz tests (slow, run with -m fuzz or -m '' for all)", "live: live subprocess service tests (run with -m live)", "live_docker: live Docker container tests (requires DECNET_LIVE_DOCKER=1)", ] filterwarnings = [ "ignore::pytest.PytestUnhandledThreadExceptionWarning", "ignore::DeprecationWarning", "ignore::RuntimeWarning", ] [tool.coverage.run] source = ["decnet"] omit = ["*/tests/*", "templates/*"] parallel = true [tool.coverage.report] show_missing = true skip_covered = false # Run with: pytest --cov --cov-report=term-missing [tool.setuptools.packages.find] where = ["."] include = ["decnet*"] [tool.bandit] exclude_dirs = [ "templates/http/decnet_logging.py", "templates/imap/decnet_logging.py", "templates/pop3/decnet_logging.py", "templates/real_ssh/decnet_logging.py", "templates/smtp/decnet_logging.py", ]