mirror of
https://git.quad4.io/RNS-Things/MeshChatX.git
synced 2026-05-11 03:06:55 +00:00
feat(vendor): integrate LXMFy vendor into the project and update dependencies
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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]
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user