Replaces LICENSE (GPLv3 -> AGPLv3) and prepends `SPDX-License-Identifier: AGPL-3.0-or-later` to every source file across decnet/, decnet_web/, tests/, scripts/, and tools/. Rationale: closes the GPLv3 ASP loophole so any party operating a modified DECNET as a network service must offer their modified source. Personal copyright (Samuel Paschuan) + inbound=outbound contributions make a future unilateral relicense infeasible. - LICENSE: full AGPL-3.0 text (gnu.org/licenses/agpl-3.0.txt) - COPYRIGHT: project copyright notice - tools/add_spdx_headers.py: idempotent header injector (shebang- and PEP 263-aware) Touches 1565 source files (.py, .ts, .tsx, .js, .jsx, .css, .sh). No behavior change; comments only.
34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
"""MazeNET topology repository methods.
|
|
|
|
The full domain spans ~700 lines of methods across topologies, LANs,
|
|
deckies, edges, the status-event log, and the live reconciler mutation
|
|
queue. Each concern lives in its own submixin; ``TopologyMixin``
|
|
composes them.
|
|
|
|
The optimistic-locking helpers (``_assert_pending``,
|
|
``_check_and_bump_version``) live on ``TopologyCoreMixin`` and are
|
|
reached from sibling submixins via ``self.`` — Python's MRO resolves
|
|
them to the core mixin no matter which submixin holds the caller.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from decnet.web.db.sqlmodel_repo.topology._core import TopologyCoreMixin
|
|
from decnet.web.db.sqlmodel_repo.topology.deckies import TopologyDeckiesMixin
|
|
from decnet.web.db.sqlmodel_repo.topology.edges import TopologyEdgesMixin
|
|
from decnet.web.db.sqlmodel_repo.topology.lans import LansMixin
|
|
from decnet.web.db.sqlmodel_repo.topology.mutations import TopologyMutationsMixin
|
|
|
|
|
|
class TopologyMixin(
|
|
TopologyDeckiesMixin,
|
|
TopologyEdgesMixin,
|
|
LansMixin,
|
|
TopologyMutationsMixin,
|
|
TopologyCoreMixin,
|
|
):
|
|
"""Composed topology mixin — see submixins for the actual methods."""
|
|
|
|
|
|
__all__ = ["TopologyMixin"]
|