[project] name = "reticulum-meshchatx" version = "4.8.4" description = "A simple mesh network communications app powered by the Reticulum Network Stack" authors = [ {name = "Quad4"} ] license = "0BSD AND MIT" readme = "README.md" requires-python = ">=3.11" keywords = ["reticulum", "meshchat", "meshchatx", "lxmf", "rns"] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Other Audience", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Communications", "Topic :: Software Development :: Build Tools", ] dependencies = [ "aiohttp>=3.14.3", "lxmf>=1.1.1", "psutil>=7.2.2", "pyserial>=3.5", "rns>=1.4.2", "websockets>=16.0", "bcrypt>=5.0.0,<6.0.0", "aiohttp-session>=2.12.1,<3.0.0", "cryptography>=50.0.0,<51.0.0", "pycparser>=3.0", "audioop-lts>=0.2.2; python_version >= '3.13'", "ply>=3.11,<4.0", "lxst>=0.5.1", "miniaudio (>=1.70,<2.0)", "cbor2>=6.1.1", "wasmtime>=28.0.0", "bleak>=3.0.2,<4.0", "httpx[http2]>=0.28.1,<1.0", "altcha>=2.0.2", ] [project.scripts] meshchatx = "meshchatx.meshchat:main" meshchat = "meshchatx.meshchat:main" meshchatx-repository-http = "meshchatx.repository_http_standalone:main" lxmfy = "lxmfy.cli:main" rns-filesync = "rns_filesync.cli:main" [project.urls] Homepage = "https://github.com/Quad4-Software/MeshChatX" [tool.uv] constraint-dependencies = [ "h2>=4.4.1", ] override-dependencies = [ "setuptools>=83.0.0", ] [tool.setuptools.packages.find] where = [".", "vendor/lxmfy", "vendor/rns_filesync"] include = ["meshchatx*", "lxmfy*", "rns_filesync*"] exclude = ["tests*"] namespaces = false [tool.setuptools.package-data] meshchatx = ["public/**/*", "public/*", "src/backend/data/community_interfaces.json", "src/backend/data/licenses_frontend.json", "src/backend/data/licenses_backend.json", "src/backend/data/THIRD_PARTY_NOTICES.txt", "src/backend/data/plugins/**/*", "src/backend/data/interfaces/**/*", "src/frontend/public/repository-server-index.html"] [tool.setuptools.exclude-package-data] meshchatx = ["public/repository-server-bundled/**"] [build-system] requires = ["setuptools>=83.0", "wheel"] build-backend = "setuptools.build_meta" [dependency-groups] dev = [ "cx-freeze>=7.0.0", "hypothesis>=6.152.4", "jsonschema>=4.26.0", "pygments>=2.20.0", "pytest>=9.0.3", "pytest-asyncio>=0.25.0", "pytest-cov>=7.1.0", "pytest-xdist>=3.8.0", "ruff>=0.14.0", "debugpy>=1.8.16", "mutmut>=3.5.0; python_version < '4.0'", "basedpyright>=1.39.9", ] [tool.ruff] exclude = [ ".git", ".mypy_cache", ".pnpm-store", ".ruff_cache", "build", "dist", "node_modules", "venv", ".venv", "tests/frontend", "tests/backend/fixtures/sideband_plugins", "vendor", "*.egg-info", ] [tool.ruff.lint] extend-select = ["D"] extend-ignore = [ "D100", "D101", "D102", "D103", "D104", "D105", "D106", "D107", "D203", "D213", "D401", ] [tool.coverage.run] parallel = true [tool.mutmut] paths_to_mutate = ["meshchatx/src/backend/"] pytest_add_cli_args_test_selection = [ "tests/backend/", "--ignore=tests/backend/test_performance_hotpaths.py", "--ignore=tests/backend/test_memory_profiling.py", "--ignore=tests/backend/test_performance_bottlenecks.py", ]