feat(vendor): integrate LXMFy vendor into the project and update dependencies

This commit is contained in:
Ivan
2026-05-02 05:22:46 -05:00
parent 2f9a8767c4
commit da83df9c30
7 changed files with 1641 additions and 34 deletions
+1
View File
@@ -1,3 +1,4 @@
graft vendor
recursive-include meshchatx/public *
recursive-exclude meshchatx/public/repository-server-bundled *
recursive-include meshchatx/src/backend *
@@ -1,5 +1,5 @@
Reticulum MeshChatX - Third-party notices
Generated at: 2026-04-27T17:37:14.375034Z
Generated at: 2026-05-02T10:21:04.500382Z
Frontend source: node_modules
Python dependencies
@@ -25,12 +25,18 @@ audioop-lts 0.2.2
bcrypt 5.0.0
License: Apache-2.0
Author: The Python Cryptographic Authority developers <cryptography-dev@python.org>
bleak 3.0.1
License: MIT
Author: Henrik Blidh
cffi 2.0.0
License: MIT
Author: Armin Rigo, Maciej Fijalkowski
cryptography 46.0.7
License: Apache-2.0 OR BSD-3-Clause
Author: The Python Cryptographic Authority and individual contributors <cryptography-dev@python.org>
dbus-fast 4.0.4
License: MIT
Author: Bluetooth Devices Authors
frozenlist 1.8.0
License: Apache-2.0
Author: aiohttp team <team@aiohttp.org>
@@ -45,11 +51,11 @@ lxmf 0.9.6
Author: Mark Qvist
lxmfy 1.6.2
License: BSD-0-Clause
Author: Quad4
Author: Quad4 <team@quad4.io>
lxst 0.4.6
License: Other/Proprietary License
Author: Mark Qvist
miniaudio 1.70
miniaudio 1.71
License: MIT
Author: Irmen de Jong <irmen@razorvine.net>
multidict 6.7.1
@@ -79,7 +85,7 @@ pyserial 3.5
reticulum-meshchatx 4.6.0
License: 0BSD AND MIT
Author: Quad4
rns 1.1.9
rns 1.2.0
License: Reticulum License
Author: Mark Qvist
websockets 16.0
+54 -3
View File
@@ -133,13 +133,64 @@ def _python_roots_from_pyproject(repo_root: Path) -> tuple[str, ...]:
return tuple(sorted(set(names), key=lambda n: n.lower()))
def _bundled_lxmfy_license_row(repo_root: Path) -> dict[str, Any] | None:
if _dist_for_requirement_name("lxmfy") is not None:
return None
vp = repo_root / "vendor" / "lxmfy" / "pyproject.toml"
if not vp.is_file():
return None
try:
with vp.open("rb") as f:
data = tomllib.load(f)
except OSError:
return None
proj = data.get("project")
if not isinstance(proj, dict):
return None
name = proj.get("name")
if name != "lxmfy":
return None
version = proj.get("version")
version_s = version.strip() if isinstance(version, str) and version.strip() else ""
author = ""
authors = proj.get("authors")
if isinstance(authors, list) and authors:
first = authors[0]
if isinstance(first, dict):
an = (first.get("name") or "").strip()
ae = (first.get("email") or "").strip()
if an and ae:
author = f"{an} <{ae}>"
elif an or ae:
author = an or ae
lic = proj.get("license")
license_s = lic.strip() if isinstance(lic, str) and lic.strip() else ""
return {
"name": "lxmfy",
"version": version_s,
"author": author,
"license": license_s,
}
def _merge_bundled_lxmfy(repo_root: Path, rows: list[dict[str, Any]]) -> list[dict[str, Any]]:
if any(str(r.get("name") or "").lower() == "lxmfy" for r in rows):
return rows
row = _bundled_lxmfy_license_row(repo_root)
if row is None:
return rows
merged = [*rows, row]
merged.sort(key=lambda r: str(r.get("name", "")).lower())
return merged
def collect_backend_licenses() -> list[dict[str, Any]]:
repo = _repo_root()
for root in _ROOT_DIST_CANDIDATES:
if _dist_for_requirement_name(root) is not None:
return _collect_python_transitive((root,))
repo = _repo_root()
return _merge_bundled_lxmfy(repo, _collect_python_transitive((root,)))
roots = _python_roots_from_pyproject(repo)
return _collect_python_transitive(roots)
return _merge_bundled_lxmfy(repo, _collect_python_transitive(roots))
def _license_from_package_json(data: dict[str, Any]) -> str:
Generated
+1 -21
View File
@@ -1391,26 +1391,6 @@ files = [
[package.dependencies]
rns = ">=1.1.9"
[[package]]
name = "lxmfy"
version = "1.6.2"
description = "LXMF bot framework for creating bots for the Reticulum Network"
optional = false
python-versions = ">=3.11"
groups = ["main"]
files = []
develop = false
[package.dependencies]
lxmf = ">=0.9.4"
rns = ">=1.1.5"
[package.source]
type = "git"
url = "https://git.quad4.io/LXMFy/LXMFy.git"
reference = "HEAD"
resolved_reference = "e63654d2d2cf5241927ca0e53ac455f027cca84e"
[[package]]
name = "lxst"
version = "0.4.6"
@@ -3396,4 +3376,4 @@ propcache = ">=0.2.1"
[metadata]
lock-version = "2.1"
python-versions = ">=3.11"
content-hash = "c1815b412d1367b06a5689a9d2eb34f993d3ff1f6f8eafe242e7270177762077"
content-hash = "2790502557b4ff52072462dd3e125af028cc4ea1dba26a19af03ee7445ef2416"
+9 -5
View File
@@ -22,7 +22,6 @@ classifiers = [
dependencies = [
"aiohttp>=3.13.3",
"lxmf>=0.9.6",
"lxmfy @ git+https://git.quad4.io/LXMFy/LXMFy.git",
"psutil>=7.2.2",
"bleak==3.0.1",
"rns>=1.2.0",
@@ -42,16 +41,19 @@ dependencies = [
meshchatx = "meshchatx.meshchat:main"
meshchat = "meshchatx.meshchat:main"
meshchatx-repository-http = "meshchatx.repository_http_standalone:main"
lxmfy = "lxmfy.cli:main"
[project.urls]
Homepage = "https://git.quad4.io/RNS-Things/MeshChatX"
[tool.poetry]
packages = [{include = "meshchatx"}]
packages = [
{include = "meshchatx"},
{include = "lxmfy", from = "vendor/lxmfy"},
]
[tool.poetry.dependencies]
python = ">=3.11"
lxmfy = {git = "https://git.quad4.io/LXMFy/LXMFy.git"}
lxst = ">=0.4.6"
[tool.poetry.group.dev.dependencies]
@@ -70,8 +72,9 @@ pytest-xdist = "^3.8.0"
path = "logo"
[tool.setuptools.packages.find]
where = ["."]
include = ["meshchatx*"]
where = [".", "vendor/lxmfy"]
include = ["meshchatx*", "lxmfy*"]
exclude = ["tests*"]
namespaces = false
[tool.setuptools.package-data]
@@ -92,6 +95,7 @@ exclude = [
"venv",
".venv",
"tests/frontend",
"vendor",
]
[tool.ruff.lint]
-1
View File
@@ -12,7 +12,6 @@ frozenlist==1.8.0 ; python_version >= "3.11"
idna==3.11 ; python_version >= "3.11"
jaraco-context==6.1.2 ; python_version >= "3.11"
lxmf==0.9.5 ; python_version >= "3.11"
lxmfy @ git+https://git.quad4.io/LXMFy/LXMFy.git@e63654d2d2cf5241927ca0e53ac455f027cca84e ; python_version >= "3.11"
lxst==0.4.6 ; python_version >= "3.11"
miniaudio==1.70 ; python_version >= "3.11"
multidict==6.7.1 ; python_version >= "3.11"
Generated
+1566
View File
File diff suppressed because it is too large Load Diff